Могут ли другие приложения определенного уровня доступа получить доступ к этим каталогам?
getExternalCacheDir()
доступен любым приложением, которое держит разрешение на READ_EXTERNAL_STORAGE
или WRITE_EXTERNAL_STORAGE
.
getCacheDir()
доступен только вашему приложению, за исключением того, что на корневых устройствах пользователь явно использует приложение, которое использует возможности суперпользователя для доступа к всей файловой системе. Однако любое приложение может заставить систему очистить кеш, поэтому в какой-то мере любое приложение может иметь привилегии удаления для getCacheDir()
. Если это касается вас, используйте getFilesDir()
.
Должен ли телефон использоваться для доступа к ним?
Для getCacheDir()
, да (исключая описанный выше сценарий четкого кэша). Для getExternalCacheDir()
, №.
Спасибо за быстрый ответ. Может ли каталог, возвращаемый getCacheDir(), быть подходящим для хранения токенов доступа для удаленного API, например? Или это будет лучше хранить в другом месте? –
@QuestionAsker: Это зависит от того, кого вы беспокоитесь об использовании этих жетонов и какова степень риска, если кто-то получает эти жетоны. Если вас беспокоят запущенные вредоносные программы, а токены не являются исключительно ценными, 'getCacheDir()' должно быть в порядке. Если вы беспокоитесь о том, что * пользователь * крадет токены, не держитесь за них в файлах, а только удерживайте их в ОЗУ, а затем узнайте, что достаточно выделенные злоумышленники могут их получить (например, запустите приложение на эмуляторе, используйте отладчик ядра). – CommonsWare