Установите .APK из Android Cache

У меня проблемы с установкой APK, сохраненного во внутреннем кэше Android. Нет проблем с сохранением файла во внешнем хранилище или во внешнем кэше с помощью context.getExternalCacheDir () .

Но если я попытаюсь использовать context.getCacheDir () , журнал возвращает

/data/data/com.my.package/cache/update.apk: open не удалось: EACCES (в доступе отказано)

  File file = context.getCacheDir ();  Файл outputFile = новый файл (файл, «update.apk»);  если (outputFile.exists ()) {outputFile.delete ();  } FileOutputStream fos = новый FileOutputStream (outputFile);  InputStream = c.getInputStream ();  байт [] буфер = новый байт [1024];  int len1 = 0;  в то время как ((len1 = is.read (буфер))! = -1) {fos.write (буфер, 0, len1);  } fos.close ();  закрыто();  Намерение намерение = новое намерение (Intent.ACTION_VIEW); //СОХРАНИТЬ В КЭШЕ intent.setDataAndType (Uri.fromFile (outputFile), "application/vnd.android.package-archive");  intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); //без этого флага android вернул ошибку намерения!  context.startActivity (intent);  

Похоже, внутренний кеш не позволяет правильно читать APK.

Дело в том, что если файл сохраняется во внешнем хранилище или внешнем кэше, APK будет доступен пользователю, а я этого не хочу.

Что делать, чтобы сохранить файл во внутреннем кэше?

Спасибо


Похоже, внутренний кеш не позволяет правильно прочитать APK.

Это потому, что приложение-установщик не имеет прав на чтение вашего файла.

Дело в том, что если файл сохраняется во внешнем хранилище или внешнем кэше, APK будет доступен пользователю, а я этого не хочу.

Тогда не устанавливайте его на устройство пользователя. Любой пользователь может скопировать любой APK со своего устройства в любое время после установки, поэтому единственный способ предотвратить доступ пользователя к APK — это вообще не иметь его на устройстве.

Что делать, чтобы сохранить файл во внутреннем кэше?

Наверное, ничего. Если вы переключитесь на openFileOutput () , вы увидите, достаточно ли MODE_WORLD_READABLE для продолжения установки. Опять же, это не помешает пользователю получить доступ к файлу APK.


Попробуйте посмотреть chmod команда для получения разрешений на чтение запись во внутренней папке … Что касается Linux, это выглядит так …

  chmod 777/data/data/*** или chmod 644/ data/data/***  

1



Как очистить кеш отдельного приложения на Android 8.0 Oreo и выше

Цель

  • Очистить кеш кеша отдельного приложения на Android 8.0 Oreo

Среда

  • Android 8.0 Oreo
  • Android 9. 0 Пирог

Процедура

  1. Перейдите в Настройки
  2. Коснитесь Хранилище

  3. Перейдите к Другие приложения
    ПРИМЕЧАНИЕ : вам может потребоваться нажать Внутреннее хранилище , прежде чем этот параметр станет доступен!
  4. Нажмите на приложение, для которого вы хотите очистить кеш

  5. Нажмите Очистить кеш

Дополнительные примечания

Android 8.1 Oreo не имеет возможности очистить систему. кеш или кеш всех приложений.

______________________________________________________________________________

Статья создана из

  • 1346945
Оцените статью
clickpad.ru
Добавить комментарий