Intereting Posts
Droid: Как получить идентификатор кнопки из метода onClick, описанного в XML? Как загрузить HttpResponse в файл? Android-приложение осуществляет навигацию, чтобы начать работу, когда приходит из фона Получение и обработка словаря <string, List <string >> из мыла с использованием KSoap2 Как вызвать метод onCreateView или обновить фрагмент? Как программно установить пользовательские атрибуты пользовательских компонентов? Нестандартный графический интерфейс в Android Снижение производительности анимации Android, когда устройство остается неподвижным, но тронуто Сбой приложения из-за исключения NullPointerException Изменение шрифта Android не работает Есть ли разумный способ ссылаться на ресурсы приложений (R.string …) в статических инициализаторах Android Studio Ошибка «reg» не распознается как внутренняя или внешняя команда Как создать эти библиотеки из GitHub Изменение размера шрифта на объекте кнопки Spinner Адаптация адаптера для перерабатывающего оборудования Firebase

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 файла, может изменять его произвольно, учитывая, что оно имеет правильное разрешение.

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