美文网首页程序人生
Android 11 以上适配版本更新安装本地下载的apk文件

Android 11 以上适配版本更新安装本地下载的apk文件

作者: 为自己代颜_ | 来源:发表于2021-12-03 17:23 被阅读0次

废话不多说 直接上代码 此处使用kotlin的扩展函数:
用到的依赖库:
//基础工具库 implementation 'com.github.tamsiree.RxTool:RxKit:2.6.3'

/**
 * 通过系统应用打开文件
 */
fun Context.openFile(file: File) {
    if (FileUtil.isPDFFileType(file.path)) {
        PDFViewActivity.APIs.actionStart(this, file)
    } else {
        try {
            val intent2 = Intent("android.intent.action.VIEW")
            intent2.addCategory("android.intent.category.DEFAULT")
            intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

            val uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                intent2.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION;
//                FileProvider.getUriForFile(this, this.packageName + ".FileProvider", file)
                RxFileTool.getUriForFile(this, file)
            } else {
                Uri.fromFile(file)
            }
            intent2.setDataAndType(uri, FileMimeType.getMimeType(file.path))
            startActivity(intent2)
        } catch (e: Exception) {
            //没有安装第三方的软件会提示
            showToast("没有找到打开该文件的应用程序")
        }
    }
}

调用处如下:

    // 下载存储的文件名
    var DOWNLOAD_NAME = "tanka.apk"
    @JvmField
    val BASE_FILE_INSTALL_APK_DIR = "${RxTool.getContext().externalCacheDir}/apk"     //apk安装目录,可删除

        //安装应用
        context.openFile(
            File(
                Constants.BASE_FILE_INSTALL_APK_DIR, DOWNLOAD_NAME
            )
        )

备注:externalCacheDir为外部目录 Android11对读取SD卡加了权限的限制,此处使用的外部目录无需请求权限

相关文章

网友评论

    本文标题:Android 11 以上适配版本更新安装本地下载的apk文件

    本文链接:https://www.haomeiwen.com/subject/edhmxrtx.html