1. 程式人生 > >更新應用程式安卓apk時出現解析程式包時出現問題

更新應用程式安卓apk時出現解析程式包時出現問題

    在一次工作中,需求是進入應用程式splash時檢測版本,發現新版本提示使用者進行更新,更新好後就自動跳轉安裝介面。

    我當時是把使用者點選更新下載後的apk存放到data/data/packageName/files這個目錄下,是通過getFilesDir().toString(),通過log列印路徑也是完全正確的,開啟android studio的Android Device Monitor除錯工具,在data/data/packageName/files資料夾下面也有這個apk,

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse
("file://"+filePath), "application/vnd.android.package-archive"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
這裡面的filePath就是指到這個檔案,data/data/pacageName/files/xxxx.apk,這個隱式意圖跳轉是跳轉到安裝介面的固定寫法,沒任何問題,但是下載好後跳轉就出現:

排查很多可能的原因,也沒什麼問題。後來我開啟除錯工具的時候,看到:

可以看出,許可權位上只顯示當前應用可讀可寫,但跳轉到安裝介面是屬於別的應用程式,沒有許可權執行解析操作,於是就會出現解析程式包時出現問題。

解決方案:

  通過在程式碼中寫入linux指令修改此apk檔案的許可權,改為全域性可讀可寫可執行:

String[] command = {"chmod", "777", file.getPath() };
ProcessBuilder builder = new ProcessBuilder(command);
try {
    builder.start();
} catch (IOException e) {
    e.printStackTrace();
}

通過除錯工具,發現已經變為全域性的許可權了。

然後再進行 測試,發現問題已經解決。

小提示 : 如果是android7.0以上的系統,請檢視我的另外一片文章,上面寫有解決方案,百分百能解決問題

傳送地址:點選開啟