我在安裝保存在Android內部緩存中的APK時遇到問題。 使用context.getExternalCacheDir()將文件保存在外部存儲或外部緩存中沒有問題。從Android緩存安裝.APK
但是,如果我嘗試使用context.getCacheDir(),日誌返回
/data/data/com.my.package/cache/update.apk:打開失敗:EACCES(權限否認)
File file = context.getCacheDir();
File outputFile = new File(file, "update.apk");
if(outputFile.exists()){
outputFile.delete();
}
FileOutputStream fos = new FileOutputStream(outputFile);
InputStream is = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();
Intent intent = new Intent(Intent.ACTION_VIEW);
//SAVE IN CACHE
intent.setDataAndType(Uri.fromFile(outputFile), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error!
context.startActivity(intent);
它看起來像內部緩存不允許APK被正確讀取。
事實是,如果文件保存在外部存儲或外部緩存中,APK將提供給用戶,我不希望這樣。
有什麼可以不把文件保存在內部緩存?
感謝
但我發現Google Play使用內部緩存來保存.apks,所以我認爲這可能會以某種方式進行。 「 」事實上,如果文件保存在外部存儲或外部緩存中,則APK將提供給用戶,我不希望這樣。「說到這一點,我的意思是我不想讓.APK在外掛的外掛設備上清晰可見,但很顯然apk必須存儲在某個地方纔能安裝它。 – Mariux
@Mariux:請記住,Google Play是操作系統的一部分,而您的應用不是。 – CommonsWare
如果我想使用內部存儲方法,我該如何從中讀取文件? – Mariux