Ответ 1
PackageManager
имеетdeleteApplicationCacheFiles()
, чтобы удалить кеш из одного пакета. Этот метод скрыт от SDK, и он требуетDELETE_CACHE_FILES
, разрешение на уровне подписи.
PackageManager
также имеет методfreeStorageAndNotify()
, для удаления файлы кеша из всех пакетов. Этот метод скрыт от SDK, и для этого требуется разрешениеCLEAR_APP_CACHE
, которое просто помечено как "опасный".
Было предложено либо установить, что DELETE_CACHE_FILES должен быть ослаблен, CLEAR_APP_CACHE должен повысить уровень.
Инженер-каркас ответил
Обратите внимание, что
freeStorageAndNotify's
цель - не уничтожить весь кеш файлов, но для освобождения X объема пространства, например, в магазине воспроизведения прежде чем он попытается загрузить и установить приложение. Так что есть причины использовать его, что хорошо работает с системой, но никаких причин для приложения для используйте метод, который просто слепо стирает все файлы кеша для одного приложение (это только для пользовательского интерфейса приложения настроек).
Если это действительно не ошибка приложения, т.е. вы не испортили разрешения, и она работает на Marshmallow/6/api 23, а не на других, что может означать, что это стало разрешением уровня подписи также, как DELETE_CACHE_FILES
.
Подпись | системное разрешение, что означает, что ее можно удерживать только приложения, которые подписаны с ключом подписи микропрограммы или установлены на системном разделе (например, пользователем с корневым устройством). Как описано в этот ответ.
Это имеет смысл, учитывая их предполагаемое использование/их видение (нет причин для приложения использовать метод, который просто слепо стирает все файлы кеша для одного приложения). Это может быть даже ограничено в результате этой ошибки. Когда выйдет код Android 6, мы будем знать лучше (текущий доступный 5.1.1 - ссылка на PackageManager freeStorageAndNotify).