一個新的測試機在自動下載升級安裝更新版本APP時,報出“解析程序包時出現問題”錯誤。原因眾說紛紜, 一番搜索,下面的回答比較全面:
簡單總結:
1. 安卓7以下一般問題不大
2. 安卓7及以上需要使用FileProvider
3. 安卓7.1 需要在清單中增加 REQUEST_INSTALL_PACKAGES 權限
4. 安卓8 需要授權允許應用安裝未知應用,在應用權限中設置。(此次問題)
另,
1. 注意檢查是否有外存儲器的讀寫權限, 如果沒有就無法正常下載程序。
2. 應用權限是否被允許"安裝未知應用",可以如下這樣判斷, 坑:但targetSdkVersion需要至少為26,否則下面的方法永遠返回false;
this.getPackageManager().canRequestPackageInstalls()
判斷后可以幫助用戶跳轉到設置頁面引導用戶設置,也可以讓用戶自行通過系統設置的應用權限管理設置。
Intent unknownAppSourceIntent = new Intent() .setAction(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES) .setData(Uri.parse(String.format("package:%s",MainOneActivity.this.getPackageName()))); startActivityForResult(unknownAppSourceIntent, UNKNOWN_APP_INSTALL);
一些定制android系統高於安卓8不進行步驟四,也是可以安裝的,而有些則不可以。 唉,安卓的碎片化~。。。