7.0版本升级更新 解析包错误

西湖美景三月天  春雨如酒柳如烟!

        花个半小时写个版本更新,targetSdkVersion设置成24,最后下载完成准备安装的竟然弹出个"解析包错误",好吧,那么就去发现和解决问题。首先在7.0中 uri是不能直接暴露出来的,以下是7.0和小于7.0版本的处理方式: 

if(Build.VERSION.SDK_INT>=24){

Intent intent =new Intent(Intent.ACTION_VIEW);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.addCategory(Intent.CATEGORY_DEFAULT);

Uri uri = FileProvider.getUriForFile(UpdateService.this, UpdateService.this.getApplicationContext().getPackageName() +".provider",file);

intent.setDataAndType(uri,"application/vnd.android.package-archive");

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

startActivity(intent);

}else{

Intent install =new Intent(Intent.ACTION_VIEW);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

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

startActivity(install);   

}

在此要注意在版本高于7.0中,一定要添加

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);且一定要在intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);不然此临时权限则会被覆盖而失效。

再重新编译打包吧,发现不会出现“解析包错误”了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容