Android 下载apk后跳转安装(7.0之后)

2020-03-23  本文已影响0人  GiottoYLY

更新完成后跳转到已下载的apk本地路径

1. installApkNew方法跳转

installApkNew跳转方法
/**

* @Title: installApk

* @Description: 安装APK

* @return: void 适配7.0(AndroidManifest加provider)

*/

public static void installApkNew(Context mContext, String path) {
    File file =new File(path);
    Intent intent =new Intent(Intent.ACTION_VIEW);
    // 由于没有在Activity环境下启动Activity,设置下面的标签
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (Build.VERSION.SDK_INT >=24) {//判读版本是否在7.0以上
        //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致  参数3  共享的文件
        Uri apkUri = FileProvider.getUriForFile(mContext,"com.XXX.XXX", file);//包名
        //添加这一句表示对目标应用临时授权该Uri所代表的文件
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(apkUri,"application/vnd.android.package-archive");
    } else {
        intent.setDataAndType(Uri.fromFile(file),
        "application/vnd.android.package-archive");
    }
    mContext.startActivity(intent);
}

2. AndroidManifest 加 provider

AndroidManifest
<application ...>
        <!--解决7.0安装apk失败-->
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.XXX.XXX" 包名
        android:exported="false"
        android:grantUriPermissions="true">
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</application>

3. res 下 增加 xml 文件夹 , 新增 provider_paths.xml 文件

xml文件夹
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
            name="files_root"
            path="Android/data/com.dealeronline.rmcompany/" />
    <external-path
            name="external_storage_root"
            path="." />
</paths>
provider_paths.xml

注: compileSdkVersion 28 还需增加权限,不然跳转失败

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
上一篇下一篇

猜你喜欢

热点阅读