更新完成后跳转到已下载的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" />
网友评论