У меня проблемы с установкой APK, сохраненного во внутреннем кэше Android. Нет проблем с сохранением файла во внешнем хранилище или во внешнем кэше с помощью context.getExternalCacheDir().
Но если я попытаюсь использовать 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 будет доступен пользователю, а я этого не хочу.
Что можно сделать, чтобы сохранить файл во внутреннем кэше?
Спасибо