使用android 7.0 安装APK

在andorid 7.0之前我们只需要使用

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive")

即可安装apk,但是在7.0以后为了提高私有文件的安全性,面向 Android 7.0 或更高版本的应用私有目录被限制访问 (0700)。

传递软件包网域外的file://URI 可能给接收器留下无法访问的路径。因此,尝试传递file://URI 会触发FileUriExposedException。分享私有文件内容的推荐方法是使用FileProvider。

1.首先就要在Manifast里面 添加一个provider


使用android 7.0 安装APK_第1张图片
我们自己的provider

android:authorities="com.fxyx.activity.yiduan_fxyx.fileProvider" 这个属性里面 要记得在.fileProvider之前改成自己的包名

2.然后在res目录下创建一个xml的文件夹 ,在里面创建file_paths的资源文件(注:名字可以随便起 但是要和provider里面的名字相同 一致)

创建好资源文件以后 里面添加

使用android 7.0 安装APK_第2张图片
创建好的资源文件

在这里external-pathpath=" ",我给的是空的 这样安装的时候就可以是在整个目录下查找,如果给了固定的目录,那它就只会在固定的目录下查找要安装的文件

3.前两步创建好以后 就要写我们的方法了

使用android 7.0 安装APK_第3张图片
7.0以后的方法

首先我们要判断是否是高版本的系统,如果还是低版本的 就依旧使用原来的方法即可安装,如果是高版本的系统,就要使用FileProvider.getUriForFile 这个方法来获取临时uri权限 赋予项目,从而保证私有目录的权限不被破坏

最后运行 就会发现apk已经可以运行安装了。

你可能感兴趣的:(使用android 7.0 安装APK)