Android 4.4: разрешено ли разрешение WRITE_EXTERNAL_STORAGE для первичного внешнего хранилища / mnt / sdcard?

Android 4.4 новые правила доступа к внешнему хранилищу, похоже, нарушают многие приложения.

В соответствии с этим: http://source.android.com/devices/tech/storage/ (читайте внимательно) кажется, что разрешение WRITE_EXTERNAL_STORAGE больше не предоставляет доступ к вторичному съемному хранилищу с / mnt / external_sd в Android 4.4. Говорят, что приложения могут получить доступ к частной папке на вторичном съемном носителе и удаляется при удалении приложения.

Теперь я считаю, что в соответствии с тем, что является неявным, WRITE_EXTERNAL_STORAGE вместо этого предоставит доступ к первичному внешнему хранилищу / mnt / sdcard.

Если это правда, возможно, например, что мое приложение запускает другое приложение и передает его с файлом: // url в основном внешнем хранилище, а затем вызываемое приложение может редактировать и сохранять файл на один и тот же путь Он имеет разрешение WRITE_EXTERNAL_STORAGE.

Поддерживает ли Android 4.4 такой доступ к первичному доступу к внешнему хранилищу?

Вы правы, но чтобы понять, почему давайте посмотрим на детали различных внешних хранилищ и их системы разрешений.

Первичное внешнее хранилище

В модели внешнего хранилища KitKat каждому приложению предоставляется доступ к специальному домашнему каталогу на основном внешнем хранилище. Приложения всегда могут читать и записывать содержимое этих внешних домашних каталогов, не требуя специального разрешения. Однако, в отличие от внутренних домашних приложений приложения, внешние приложения могут быть доступны другим приложениям при определенных обстоятельствах. READ_EXTERNAL_STORAGE предоставляет приложениям полный доступ для чтения к первичной внешней памяти, даже для всех домашних источников. Однако WRITE_EXTERNAL_STORAGE предоставляет разрешение на запись и чтение для первичного внешнего хранилища. Теперь давайте спросим, ​​почему с домашним каталогом, если кто-либо, обладающий вышеуказанными разрешениями, может вмешиваться в них? Причина в том, что эти новые внешние домашние серверы не подразумеваются как граница безопасности. Что делает их особенными, так это то, что Android автоматически удалит их, как только утерянное приложение будет деинсталлировано, поэтому у нас есть автоматическая очистка. Это также означает, что вы не должны хранить личные данные приложения, такие как учетные данные или доступные для использования вещи, такие как файлы конфигурации во внешней памяти. Также приятно, что медиа-сканер игнорирует те домашние диски. Также имейте в виду, что эта часть памяти может быть установлена ​​на компьютере, где Android эффективно теряет контроль над данными.

Вторичное внешнее хранилище

Здесь снова появляется концепция внешних home dirs, где приложения могут хранить свои данные, не требуя разрешения. Опять же, эти специальные диски автоматически удаляются при удалении приложения владельца и не обеспечивают никакой безопасности, поскольку SD-карта может быть смонтирована и изменена произвольно на компьютере, например. Но в отличие от первичного внешнего хранилища, все данные за пределами домашних каналов читаются только здесь. Таким образом, для доступа на запись действительно нет разрешения, потому что это совсем не предназначено.

Ваш пример. В вашем примере вы абсолютно правы в том, что запущенное приложение, которому был предоставлен URI файла, может изменять его произвольно, учитывая, что оно имеет правильное разрешение.

Если вас интересует более подробная информация, эти сообщения здесь и здесь обеспечивают отличное понимание новой модели хранилища.

Intereting Posts
Выделите элемент формы Как отправить csv / текстовый файл с телефона Android на принтер Wi-Fi? Чтение двоичного файла в android Проверьте, что HTTP-запрос поступает из моего приложения для Android Все еще путаница в отношении контекста Месяц без начальных нулей в Android Не показывать Firebase Test Нативные экспресс-объявления, получая только рекламные объявления в реальном времени, а также как сделать рекламные объявления для родной рекламы подходящими по ширине? Android: ViewPager застревает между видами Добавить более двух просмотров в ViewSwitcher FFMpeg на Android, неопределенные ссылки на функции libavcodec, хотя он указан в командной строке «Cookies не включали ошибку» на некоторых устройствах Не найден ресурс, который соответствует указанному имени 'android: Theme.Holo.Light.DarkActionBar' Как я могу ждать 10 секунд без блокировки пользовательского интерфейса приложения в android Проверка имени пользователя и пароля на Android Как сделать небольшую вспышку при нажатии кнопки?