У меня проблемы с установкой APK, сохраненной в Cache для Android. Нет проблем с сохранением файла в External Storage или External Cache с использованием context.getExternalCacheDir().Установить .APK из Android Cache
Но если я пытаюсь использовать 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
Если я хочу использовать подход Internal Storage, как я могу прочитать файл из него? – Mariux