西湖美景三月天 ?春雨如酒柳如煙点晴!
????????花個半小時寫個版本更新尺栖,targetSdkVersion設(shè)置成24,最后下載完成準備安裝的竟然彈出個"解析包錯誤",好吧息尺,那么就去發(fā)現(xiàn)和解決問題硝清。首先在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);不然此臨時權(quán)限則會被覆蓋而失效。
再重新編譯打包吧徊都,發(fā)現(xiàn)不會出現(xiàn)“解析包錯誤”了沪斟。