我这里就不说下载过程了,我是默认各位读者都是已经把app下载好了到某个目录
1.在清单文件中添加权限(这个权限经本人测试,是不需要动态申请的)
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
2.在res建立文件夹xml,解释一下,这里path= “.” 是代表sd卡路径,name 是你需要获得读取权限的目录
7.0.png
3.在清单文件的application节点下注入以下代码
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.qq.qq.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
4.判读版本
if (Build.VERSION.SDK_INT >= 24) {//判读版本是否在7.0以上
Uri apkUri = FileProvider.getUriForFile(BaseApplication.getInstance(), "xml中
android:authorities的值", apkFile);
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标 应用临时授权该Uri所代表的文件
install.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(install);
} else {
Intent install = new Intent(Intent.ACTION_VIEW);
install.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(install);
}
网友评论