安卓7.0 以上手机安装问题

针对安卓7.0及以上版本的权限变化,传统的安装方式会导致错误。现在需要使用FileProvider来实现安全的文件共享。首先在res/xml创建路径策略文件,然后根据SDK版本设置不同的安装Intent。别忘了添加请求安装权限。此解决方案适用于解决7.0以上版本的安装问题。

由于安卓在7.0以上的手机做了权限处理,不能用以前的安装方法安装 ,
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse(“file://” + path), “application/vnd.android.package-archive”);
startActivity(intent);
7.0以上调用此方法会报错
java.lang.NullPointerException: Attempt to invoke virtual method ‘android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)’ on a null object reference
at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:604)
at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:578)
at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:416)
at com.xiaoluobei.facedetection.view.activity.FaceBlackInsertOrUpdateActivity$3.onClick(FaceBlackInsertOrUpdateActivity.java:262)
at

现在要用以下的方法实现安装
首先配置providefile



要在res下添加xml文件夹并写以下文件 pathlist





在这里插入图片描述
下载完成后调用以下安装方法

Intent _Intent = new Intent();
_Intent.setAction(Intent.ACTION_VIEW);
Uri _uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
_Intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
_uri = FileProvider.getUriForFile(pContext, pContext.getPackageName() + “.fileprovider”, pFile);
} else {
_uri = Uri.fromFile(pFile);
_Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
_Intent.setDataAndType(_uri, “application/vnd.android.package-archive”);
pContext.startActivity(_Intent);

当然申请安装权限不能丢
希望能帮到你

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值