Разрешение записи на sd карту android — Доброе дело

Разрешение записи на sd карту android

Оглавление:

Разрешение на запись в корень sd-карты на Android 4.4+

Ни для кого не секрет, что операционная система Android широко распространена в мобильном мире.

Такое повсеместное использование детища от Google провоцирует и рост числа хакерских атак на данную платформу. В целях борьбы с этим неприятным моментом IT-гигант пытается вводить новые функции, нацеленные на повышение безопасности владельцев устройств с системой Андроид, но некоторые из этих функций могут стать источником дополнительных неудобств. О том, как устранить одно из таких неудобств, и пойдёт речь ниже

Содержание статьи:

Ограничение доступа к карте памяти

В теме Память на Android. Все разделы памяти Андроид устройств мы уже касались вопроса памяти мобильной операционной системы. Многие пользователи смартфонов на базе Android версий 4.4 и старше столкнулись с ситуацией, когда программы от сторонних разработчиков не имеют доступ в корень карты памяти . Причём возникает данная проблема и у тех, кто приобрёл новый аппарат уже с Android KitKat и выше на борту, и у тех, кто обновился до новой системы уже после покупки.

Почему программы Андроид не имеют доступ в корень sd-карты?
Дело в том, что открытый доступ в корень накопителя — это большая дыра в безопасности всей операционной системы . Делая попытки обезопасить пользователей от злоумышленников, компания Google пошла на такой шаг, как ограничение доступа к карте памяти.

Такое положение дел устраивает далеко не всех, поэтому ниже мы рассмотрим способ вернуть сторонним программам доступ к корню карты памяти.

Программа SDFix от компании NextApp

Сразу отметим, что для решения проблемы нам необходимо наличие рут-прав у пользователя в системе Андроид. В статье Убираем рекламу на Android. Файл hosts мы уже касались этого определения. Приведём ниже небольшую выдержку:

root — это права суперпользователя в UNIX-подобных системах. Если быть более точным, то root — это аккаунт, владелец которого обладает привилегированными правами доступа и изменения файловой системы

Итак, у нас, по сути, есть два варианта действий:

  • программный (в автоматическом режиме);
  • ручной (редактированием системных файлов).
  • Для использования программного метода нам необходимо скачать на свой аппарат приложение SDFix: KitKat Writable MicroSD от компании NextApp из магазина Google Play или из прикреплённого к этой статье файла: nextapp.sdfix

    Установить программу и запустить её, дав разрешение на root-доступ

    Соглашаемся на внесение изменений и жмём на кнопку Continue
    После некоторого ожидания программа выдаст сообщение об успешном завершении операции

    Кроме того, перед внесением изменений программа SDFix создаёт резервную копию редактируемых файлов, которая сохраняется по пути

    В случае необходимости мы всегда сможем восстановить исходный файл, предварительно удалив окончание .original-pre-sdfix в его имени. Замена файла производится по аналогии с его изменением, этот процесс описан ниже.

    Ручное предоставление доступа к карте памяти на Андроид

    Устранение проблем записи на внешнюю SD-карту в Android 4.4+ возможно и в ручном режиме .
    Стоит понимать, что вышеупомянутая программа SDFix всего лишь выполняет одну функцию, которую вполне можно воспроизвести и самостоятельно.

    Более того, если программа в ходе работы выдаст ошибку, то проделывание этой же операции вручную вполне может увенчаться успехом.

    Приведём пошаговую инструкцию по редактированию файла platform.xml

    1. Делаем бэкап системы смартфона. Бэкап нам нужен для возможности отката в случае непредвиденных обстоятельств и сбоев. Можно просто сделать копию файла, который мы собираемся редактировать, но надёжнее будет делать полный бэкап системы из recovery
    2. Теперь запускаем любой файловый менеджер Андроид, допустим, это будет Total Commander
    3. Переходим в каталог
    4. Копируем из каталога файл platform.xml в любое удобное место
    5. Открываем созданный файл текстовым редактором для внесения изменений
    6. Находим в файле кусок кода, имеющий вид:
    7. И перед закрывающим тегом прописываем следующую строчку:

    В итоге у нас должен получиться следующий фрагмент кода:

  • Сохраняем внесённые изменения
  • Копируем отредактированный файл обратно в папку /system/etc/permissions/, согласившись на замену (то есть при запросе нажимаем Перезаписать )
  • Теперь в свойствах файла выставляем ему права rw-r—r— (код, соответствующий этой настройке — 0644)
  • Перезагружаем аппарат.
  • На этом всё. После того, как ваше устройство загрузится, сторонние приложения смогут записывать свои данные в корень нашей флеш-карты.

    Мы предоставили доступ к корню карты памяти Андроид программам.

    Полных вам прав и безграничных возможностей.

    Разрешение записи на sd карту android

    …ОС ограничивает приложениям доступ на карту памяти SD. Даже если пользователь предоставит разрешение, утилиты смогут записывать только в общедоступные папки и не смогут писать файлы по другим адресам.

    Ключевая фраза в приведенной выше цитате “…смогут записывать только в общедоступные папки…”, т.е. все таки можно… осталось выяснить как создать эти папки.

    Далее я полез на 4pda.ru и нашел там ниже следующую инструкцию:

    Как же меня достали вопли о проблемах с записью файлов на внешнюю sd-карту под Android 4.4 и советы гуру о обязательном применении патча и рутовании. На самом деле все просто: несистемным приложениям запрещено писать в чужую (!) папку, а в свою можно. Авторы приложений, имеющие мозг – уже давно все поправили. А для прочих приложеий есть голова и руки у владельцев устройства.

    1. Идем в магазин #Google Play Store, открываем страничку нужного приложения и видим его ключевое название (ID) в адресной строке, в нашем случае из “ https://play.google.co…d=ru.yandex.yandexmaps ” понятно, что название/ID приложения “ru.yandex.yandexmaps”

    3. Запускаем приложение и в нем указываем созданную папку, при необходимости (в случае карт Яндекс это требуется) – перезапускаем приложение.

    4. Получаем профит – карты отлично скачиваются и сохраняются на внешнюю карту.
    И так для любого приложения и без всякого рута!

    Решаем проблемы с записью информации на карту памяти в Android 4.4.2 KitKat

    Многие счастливые обладатели устройств с ОС Android 4.4.2 KitKat «на борту» уже наверняка столкнулись с проблемой невозможности записи данных на флешкарту большинством приложений, установленных на девайсе. Сделано, по уверениям компании Google для того, чтобы сделать ОС Android 4.4.2 KitKat более защищённой системой.

    Ограничения записи на флешкарту касаются прежде всего приложений, установленных из сторонних источников. И, самое главное, в Android 4.4.2 KitKat запрещается модификация файлов, которые напрямую не относятся к приложениям, которые хотят сделать эту модификацию. Отсюда и невозможность записи на SD-карту.

    На практике сие ограничение означает буквально следующее: пользуйтесь стандартными мессенджерами, фоторедакторами, файловыми менеджерами! Потому как если разработчик вашего ПО не смог вовремя отреагировать и добавить обновление к вашему фоторедактору, к примеру, то все ваши отредактированные фотки будут «живы» пока работает фоторедактор – записать-то на карту ваши отредактированные фотки у вас уже не получится!

    Более продвинутые пользователи, постоянно копирующие данные с флешки на компьютер и назад, могут столкнуться с такой проблемой: компьютер определять определяет вашу «флешку», видит файлы, но вот что-либо сделать с ними уже не может – отказ в доступе! Эту проблему можно поправить, установив на свой девайс приложение SDFix: KitKat Writable MicroSD , которое даст доступ к карте памяти. Но работать это приложение будет только на ROOT-ированных устройствах.

    Работает SDFix: KitKat Writable MicroSD просто: после установки и запуска приложения, вы нажимаете на Продолжить («Continue»), соглашаетесь с условиями и снова нажимаете на Продолжить («Continue»). Если на вашем устройстве уже установлено приложение Superuser, то вам следует разрешить в нём доступ SDFix к ROOT-директориям.

    SDFix KitKat Writable MicroSD в процессе своей работы изменит файл /system/etc/permissions/platform.xml, в котором пропишет разрешение для записи и модификации файлов приложениями, которые обладают разрешением WRITE_EXTERNAL_STORAGE. Оригинал изменённого SDFix: KitKat Writable MicroSD файла вы сможете найти по имени platform.xml.original-pre-sdfix. Впоследствии вы всегда сможете восстановить оригинальный файл.

    Для самых «рукастых» пользователей, обладающих ROOT-доступом на своём устройстве, есть вариант внести исправления в нужный файл, не прибегая к помощи SDFix: KitKat Writable MicroSD.

    Для этого запустите файл-менеджер, который может редактировать файлы, находите файл platform.xml по адресу /system/etc/permissions/, и открываете его при помощи встроенного редактора.

    После этого находите секции android.permission.WRITE_MEDIA_STORAGE и android.permission.WRITE_EXTERNAL_STORAGE и добавляете в этих секциях строчки с кодом:

    После этого в редакторе сохраните изменённый файл.

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

    Android в России: Новости, советы, помощь

    Android 5.0 и карта памяти

    • Нравится
    • Не нравится
    • bingo220 15 Мар 2015

    Прошу подсказки. На сколько начитался, вроде как, в Lollipop должны были исправить проблему, присущую KitKat, чтения/записи на sd-карту.

    Пользую «Samgung Note 3» и SD-карту. Одно приложение, а именно «ES Проводник», при первой попытке записи на внешнюю карту, действительно выдал запрос на предоставление программе полномочий обращения к SD. Полномочия подтвердил, программа прекрасно работает с SD.

    На телефоне имеются приложения, которым тоже имею желание предоставить возможность записи на внешнюю карту.

    Вся беда в том, что никаких запросов, при обращении к карте не выдается. Программы просто не выполняют операции чтения/записи на SD.

    В диспетчере приложений, в меню «Разрешения» у этих программ имеется пункт «Изменение или удаление содержимого SD-карты. Считывание содержимого SD-карты.»

    Но, на деле, с карточкой программы не работают.

    Подскажите пожалуйста, коим боком, либо каким изгибом, возможно разрешить программе юзать SD-карту?

    Рута на теле нет и в ближайшее время рутовать не планировалось.

    Ведь должна же, по идее, быть «тупая кнопка», аля «разрешить программе насиловать карту / запретить . «

    Весьма признателен за уделенное время по данному вопросу.

    Android 4.4: запись на SD карту сторонними приложениями

    Я изредка занимаюсь разработкой под Android (на Qt). Недавно узнал, что Гоголь заблокировал для сторонних приложений возможность записи на внешнюю SD-карту. А чтобы писать на SD, нужно рутование девайса.

    Таким образом, я не могу заставить свое приложение нормально работать на железке, так как данные занимают около 1Гб, а на внутренней памяти места нет.

    Нашел следующее решение:

    На примере Яндекс Карт.

    1. Идем в магазин #Google Play Store, открываем страничку нужного приложения и видим его ключевое название (ID) в адресной строке, в нашем случае из “https://play.google.co…d=ru.yandex.yandexmaps” понятно, что название/ID приложения “ru.yandex.yandexmaps”

    2. Создаем через системный файловый менеджер (который идет с официальной прошивкой и может писать и удалять на карте где угодно) папочку для данных нашего приложения в формате “/storage/sdcard1/Android/data/myappname” – в нашем случае с картами Яндекса будет “/storage/sdcard1/Android/data/ru.yandex.yandexmaps”.

    3. Запускаем приложение и в нем указываем созданную папку, при необходимости (в случае карт Яндекс это требуется) – перезапускаем приложение.

    4. Получаем профит – карты отлично скачиваются и сохраняются на внешнюю карту.

    И так для любого приложения и без всякого рута!

    Разрешения приложений в Android 6 и выше

    В Android есть очень хороший защитный механизм — система разрешений для приложений. По сути, это набор действий, которые система разрешает приложению выполнять. Дело в том, что по умолчанию все приложения в Android работают в изолированной среде — так называемой «песочнице». И для того чтобы сделать что-либо с чем-то, так сказать, общественным, им надо получить разрешение.

    Разрешения эти разделены на несколько категорий, но нас интересуют только две из них — «Обычные» и «Опасные». В группу «Обычные» входят такие вещи, как доступ в Интернет, создание ярлыков, подключение по Bluetooth и так далее. Эти разрешения выдаются приложениям без обязательного согласия пользователя, то есть система вас ни о чем не спрашивает.

    А вот для того, чтобы получить одно из «опасных» разрешений, приложение обязательно должно спросить владельца устройства, согласен ли он его выдать. Чем же опасны «опасные» разрешения и стоит ли выдавать их приложениям? Давайте разберемся.

    Опасные разрешения

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

    Если одно из разрешений в данной группе пользователь уже одобрил, все остальные разрешения из той же группы приложение получит автоматически — без нового запроса пользователю. Например, если приложение уже успело запросить и получить разрешение на чтение SMS, то впоследствии оно автоматически получит разрешение и на отправку SMS, и на прием MMS, и на все остальные разрешения из данной группы.

  • Просмотр событий в календаре (READ_CALENDAR).
  • Изменение уже имеющихся в календаре событий и добавление новых (WRITE_CALENDAR).
  • Чем опасно: Если вы активно пользуетесь электронным ежедневником, то доступ к нему позволит узнать все о том, чем вы занимались в прошлом, занимаетесь сегодня и собираетесь заниматься в будущем, — настоящая находка для шпиона. Также какое-нибудь криво написанное приложение может нечаянно стереть важные встречи из календаря.

  • Использование камеры (CAMERA) — возможность делать фотографии и записывать видео.
  • Чем опасно: Приложение сможет в любой момент сделать фото или записать видео, не предупреждая вас об этом.

  • Чтения контактов (READ_CONTACTS).
  • Изменение имеющихся или добавление новых контактов (WRITE_CONTACTS).
  • Доступ к списку аккаунтов (GET_ACCOUNTS).
  • Чем опасно: Позволяет приложению заполучить всю вашу адресную книгу — этим данным будут очень рады спамеры и мошенники. Также разрешает доступ к списку всех учетных записей, с помощью которых вы входите в приложения на данном устройстве, — Google, «Яндекс», Facebook, «ВКонтакте» и так далее.

    Местоположение

  • Доступ к примерному местоположению (ACCESS_COARSE_LOCATION) — на основе данных о базовых станциях мобильной сети и точках доступа Wi-Fi.
  • Доступ к точному местоположению (ACCESS_FINE_LOCATION) — на основе данных GPS.
  • Чем опасно: Позволяет приложению следить за всеми вашими перемещениями. Например, жулики могут узнать, что вы уехали в отпуск, и попробовать наведаться к вам домой.

  • Запись звука с микрофона (RECORD_AUDIO).
  • Чем опасно: Приложение сможет вести аудиозапись всего, что происходит рядом со смартфоном. Всех ваших разговоров. Не только по телефону.

  • Чтение состояния телефона (READ_PHONE_STATE), в том числе вашего телефонного номера, данных сотовой сети, статуса исходящих звонков и так далее.
  • Совершение звонков (CALL_PHONE).
  • Чтение списка вызовов (READ_CALL_LOG).
  • Изменение списка вызовов (WRITE_CALL_LOG).
  • Добавление голосовой почты (ADD_VOICEMAIL).
  • Использование IP-телефонии (USE_SIP).
  • Управление исходящими звонками (PROCESS_OUTGOING_CALLS), в том числе просмотр номера, на который вы в данный момент звоните, возможность завершить звонок или переадресовать его на другой номер.
  • Чем опасно: Выдавая приложению разрешение данной группы, вы позволяете ему совершать практически любые действия, которые касаются голосовой связи. Приложение сможет узнать, когда и кому вы звонили. Или позвонить куда угодно за ваш счет, в том числе на «очень платные» номера.

    • Доступ к данным от датчиков состояния здоровья (BODY_SENSORS), таким как пульсомер.
    • Чем опасно: Разрешает приложению следить за тем, что происходит с вашим телом, используя информацию от датчиков соответствующей категории, если они у вас есть и вы ими пользуетесь (встроенные в смартфон датчики движения не входят в эту категорию).

    • Отправка SMS (SEND_SMS).
    • Просмотр SMS в памяти смартфона (READ_SMS).
    • Прием SMS (RECEIVE_SMS).
    • Прием WAP push-сообщений (RECEIVE_WAP_PUSH).
    • Прием входящих MMS (RECEIVE_MMS).
    • Чем опасно: Позволяет приложению получать и читать все ваши текстовые сообщения. А также отправлять SMS (разумеется, за ваш счет) — например, чтобы подписать вас на какую-нибудь платную «услугу».

    • Чтение из памяти или карты памяти (READ_EXTERNAL_STORAGE).
    • Запись в память или на карту памяти (WRITE_EXTERNAL_STORAGE).
    • Чем опасно: Предоставляет приложению возможность читать, изменять и удалять любые ваши файлы, хранящиеся в памяти смартфона.

      — Kaspersky Lab (@Kaspersky_ru) November 7, 2014

      Как настроить разрешения приложений

      Стоит внимательно относиться к запрашиваемым приложением разрешениям. Если игра или приложение для обработки фотографий запрашивают доступ к вашему текущему местоположению, это, скорее всего, ненормально — таким приложениям данная информация ни к чему. А вот навигационному приложению GPS действительно нужен — но, в свою очередь, совершенно незачем давать ему доступ к контактам или SMS, например.

      В случае если права, которые запрашивает приложение, выглядят слишком подозрительно, лучше такое приложение вовсе не устанавливать. Или можно просто не разрешить ему доступ к тем функциям и данным, которыми вы не хотите делиться.

      В Android версии 6 и новее приложения выводят запрос пользователю в тот момент, когда им требуется то или иное из «опасных» разрешений. Если вы не согласны разрешать приложению доступ, то вы можете просто нажать кнопку «Отклонить». Правда, в том случае, если приложение действительно нуждается в том или ином разрешении, могут возникнуть ошибки в его работе.

      Запрос приложением разрешений на работу со звонками на устройстве Android 6.0.1

      Кроме того, список выданных разрешений можно в любой момент проверить и изменить в настройках операционной системы. Чтобы это сделать, перейдите в Настройки —> Приложения.

      Дальше есть два варианта. Во-первых, можно посмотреть все разрешения, выданные конкретному приложению: для этого нажмите на название интересующего вас приложения и выберите пункт Разрешения.

      Во-вторых, можно посмотреть на полный список приложений, которые запрашивали или могут запросить одно из «опасных» разрешений. Например, узнать, какие приложения были бы не прочь запросить у вас доступ к контактам и каким он уже разрешен, а также запретить это тем из них, которым вы не доверяете. Для этого нажмите на шестеренку в правом верхнем углу и выберите пункт Разрешения приложений.

      Таким образом, приложению, чтобы, например, отправить SMS, необходимо будет спросить у пользователя один раз разрешение, после чего пользователь сможет в любой момент отказать приложению в этом праве, просто передвинув кружок в настройках.

      Особые права

      Помимо разрешений, которые входят в категорию «Опасные», в Android есть еще несколько прав приложений, о которых стоит знать. Если какое-либо приложение запрашивает такие права, это повод как следует задуматься и проверить, не попался ли вам троянец.

      Специальные возможности (Accessibility)

      Наличие этих прав в приложении позволяет ему упростить использование приложения или устройства для пользователей с ограничениями, такими как слабое зрение или проблемы со слухом. Но в то же время система Android устроена таким образом, что тот же набор возможностей оказывается очень удобным инструментом для вредоносных приложений.

      Обладая этими правами, троянцы могут перехватывать данные из других приложений, в том числе вводимый пользователем текст. Кроме того, используя эти возможности, зловреды могут даже покупать приложения в Google Play Store.

      Приложение для работы с SMS по умолчанию

      Многие троянцы пытаются стать приложением для работы с SMS по умолчанию, ведь это позволяет им не только читать SMS, но и скрывать их от пользователя, даже в современных версиях Android. Например, это может понадобиться троянцам для того, чтобы перехватывать одноразовые коды для подтверждения банковских транзакций.

      Объясняем, почему вам не стоит верить оценкам и отзывам в Google Play: https://t.co/wlnDtq1kn1 pic.twitter.com/8Plj6GryoN

      — Kaspersky Lab (@Kaspersky_ru) August 30, 2016

      Права на отображение своего окна поверх других приложений

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

      Права администратора устройства

      Обладая этими правами, приложение может среди прочего сменить пароль, заблокировать камеру или даже удалить все данные с устройства. Многие троянцы запрашивают эти права, так как приложение, которое является администратором устройства, гораздо сложнее удалить.

      Примеры запроса приложением прав администратора

      Права суперпользователя

      Это самые опасные права. В штатном режиме получение приложением таких прав в Android не предусмотрено, но некоторые троянцы умеют сами получать права суперпользователя, эксплуатируя уязвимости в системе. Самое неприятное, что наличие у приложения прав суперпользователя обесценивает все остальные защитные механизмы: воспользовавшись этими правами, зловред может совершить любое действие в системе, вне зависимости от того, какие ему выданы разрешения.

      Стоит отметить, что даже новая система работы с разрешениями, появившаяся в Android 6, не защищает от зловредов, она лишь предоставляет пользователю возможность предотвратить потерю данных или денег. Например, троянец Gugi настойчиво запрашивает у пользователя права на перекрытие других приложений, обосновывая это необходимостью работы с окнами. Получив же эти права, троянец блокирует работу устройства своим окном до тех пор, пока не получит все остальные необходимые ему права.

      Заключение

      Не всем приложениям стоит разрешать делать на смартфоне все, что они хотят. А некоторые разрешения лучше вообще не давать — благо Android 6 и новее это позволяет.

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

      Однако слепо раздавать разрешения нельзя даже тем приложениям, которым вы доверяете. Просто перед тем, как дать эти разрешения, подумайте, действительно ли они нужны данному конкретному приложению.

      Эту статью стоит открыть хотя бы ради иллюстрации. Кажется, это лучшая картинка вообще из всех, что мы делали: https://t.co/MGBp2oS4kg pic.twitter.com/X0zyEYhIM9

      — Kaspersky Lab (@Kaspersky_ru) October 10, 2016

      Такая бдительность, правда, не защищает от того, что какой-нибудь зловред получит права сам через уязвимости в системе. Поэтому важно не только правильно настроить разрешения для сравнительно «мирных» приложений, охотящихся за вашими личными данными, но и иметь средство для обнаружения гораздо более опасных «буйных» зловредов — не забудьте установить на ваше Android-устройство надежный антивирус.

      Универсальный способ записи на внешнюю SD-карту на Android

      В моем приложении мне нужно хранить много изображений на устройстве. Такие изображения, как правило, соответствуют хранению устройства, и я хочу, чтобы пользователи могли выбирать внешнюю SD-карту в качестве папки назначения.

      Я читаю везде, что Android не позволяет пользователям записывать на внешнюю SD-карту, на SD-карте я имею в виду внешнюю и монтируемую SD-карту и не внешнюю память, но приложения для файлового менеджера справляются с пишите на внешний SD на всех версиях Android.

      Каков лучший способ предоставить доступ для чтения/записи на внешнюю SD-карту на разных уровнях api (Pre-KitKat, KitKat, Lollipop +)?

      Обновление 1

      Я попробовал метод 1 из ответа Doomknight, безрезультатно: Как вы можете видеть, я проверяю разрешения во время выполнения, прежде чем пытаться записать на SD:

      Но я получаю ошибку доступа, пробовал на двух разных устройствах: HTC10 и Shield K1

      1. Резюме.

      Pre-KitKat: официальная платформа Android не поддерживает SD-карты вообще, кроме исключений.

      KitKat: введенные API, позволяющие приложениям получать доступ к файлам в каталогах приложений на SD-картах.

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

      Nougat: предоставил упрощенный API для доступа к общим внешним хранилищам.

      Поскольку разрешения KitKat, не нужны, если вы используйте каталоги конкретных приложений, required в противном случае:

      С Kitkat ваши шансы на «полное решение» без укоренения почти нулевой: проект Android определенно испортил здесь. Приложения не имеют полного доступа к внешней SD-карте:

      • Менеджеры файлов: вы не можете использовать их для управления внешней SD-картой. В большинство областей, они могут читать, но не писать.
      • мультимедийные приложения: вы не можете повторно собирайте/реорганизовывайте свою медиа-коллекцию, поскольку эти приложения не может писать на него.
      • офисные приложения: почти одинаковые
      • Единственное место, на которое 3

        sup > rd подают заявки на вечеринки, разрешено писать на вашем внешняя карта — это «собственные каталоги» (т. /sdcard/Android/data/

        Единственные способы действительно исправление, требующее либо производителя (некоторые из них исправлены это, например. Huawei с обновлением Kitkat для P6) — или root. (объяснение Иззи продолжается)

        2. Об универсальном решении.

        история говорит, что нет универсального способа записи на внешнюю SD-карту но продолжается.

        Доступ к внешнему хранилищу защищен различными приложениями Android разрешения. Начиная с Android 1.0, доступ на запись защищен разрешение WRITE_EXTERNAL_STORAGE . Начиная с Android 4.1, прочитайте доступ защищен разрешением READ_EXTERNAL_STORAGE .

        Начиная с Android 4.4, владелец, группа и режимы файлов на внешние устройства хранения теперь синтезируются на основе каталога состав. Это позволяет приложениям управлять своими конкретными пакетами каталогов на внешнем хранилище, не требуя, чтобы они WRITE_EXTERNAL_STORAGE . Например, приложение с пакетом name com.example.foo теперь может свободно получать доступ Android/data/com.example.foo/ на внешних устройствах хранения без разрешения. Эти синтезированные разрешения выполняются посредством обертывание необработанных устройств хранения данных в демоном FUSE.

        Android 6.0 представляет новую модель runtime permissions, где приложения запрашивать возможности, когда это необходимо во время выполнения. Потому что новая модель включает разрешения READ/WRITE_EXTERNAL_STORAGE , платформу необходимо динамически предоставлять доступ к хранилищу без убийства или перезапуск уже запущенных приложений. Он делает это, поддерживая три различные виды всех установленных устройств хранения:

      • /mnt/runtime/default отображается приложениям без специального хранилища разрешения.
      • /mnt/runtime/read отображается приложениям с READ_EXTERNAL_STORAGE
      • /mnt/runtime/write отображается приложениям с WRITE_EXTERNAL_STORAGE
      • 3. О вашем обновлении 1.

        Я бы использовал каталоги конкретных приложений чтобы избежать проблемы вашего обновленного вопроса и ContextCompat.getExternalFilesDirs() с помощью документация getExternalFilesDir в качестве справочной информации.

        Улучшите эвристику для определения того, что представляет собой съемный носитель на основе различных уровней api, таких как android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT

        Помните, что Android 6.0 поддерживает переносные устройства хранения, а сторонние приложения должны проходить через «Структура доступа к хранилищу» . Ваши устройства HTC10 и Shield K1, вероятно, являются API 23.

        В вашем журнале показано исключение, запрещающее разрешение, доступ к /mnt/media_rw , например это исправление для API 19 +:

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

        Возможно альтернатива Gizm0 вашему методу getStorageDirectories() это хорошая отправная точка.

        ContextCompat.getExternalFilesDirs решает проблему , если вам не нужен доступ к другим папкам.

        4. Запросить разрешения в манифесте (Api = 23).

        Добавьте следующий код в свой AndroidManifest.xml и прочитайте Получение доступа к внешнему хранилищу

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

        Если вам нужно обоим. вам нужно запросить только разрешение WRITE_EXTERNAL_STORAGE .

        Игнорируйте следующую заметку из-за ошибок, но попробуйте использовать ContextCompat.getExternalFilesDirs() :

        Примечание.. Начиная с Android 4.4, эти разрешения не требуются. если вы читаете или записываете только файлы, которые являются приватными для вашего приложения. Для получения дополнительной информации. см. сохранение файлов, которые являются частями приложения.

        Запросить разрешения во время выполнения, если уровень API 23+ и читать Запрос разрешений во время выполнения

        Начиная с Android 6.0 (уровень API 23), пользователи предоставляют разрешения для приложений, пока приложение запущено, а не когда они устанавливают приложение. или обновляют приложение. пользователь может отменить разрешения.

        5. До KitKat попытайтесь использовать метод Doomsknight 1, метод 2 в противном случае.

        • До Android 4.4 официальная поддержка съемных носителей в Android не началась. Начиная с KitKat в FMW API появляется концепция «первичного» и «вторичного» внешнего хранилища.
        • Предыдущие приложения просто полагаются на индексацию MediaStore, поставляют аппаратное обеспечение или проверяют точки монтирования и применяют некоторые эвристики для определения того, что представляет собой съемный носитель.
        • Начиная с Android 4.2, у разработчиков устройств был запрос на блокировку съемных носителей для обеспечения безопасности (многопользовательская поддержка), а новые тесты были добавлены в 4.4.
        • Так как KiKat getExternalFilesDirs() и другие методы были добавлены, чтобы вернуть полезный путь на все доступные объемы хранения (первый Возвращаемый элемент — это основной объем).
        • В приведенной ниже таблице указано, что разработчик может попытаться сделать и как ответит KitKat:
        • Перед тем, как KitKat попытается использовать метод Doomsknight 1 или прочитайте этот ответ от Gnathonic или gist:

          Также прочтите объяснение Паоло Ровелли и попытайтесь использовать решение Джеффа Шарки, поскольку KitKat:

          В KitKat теперь есть открытый API для взаимодействия с эти вторичные совместно используемые устройства хранения данных.

          Новый Context.getExternalFilesDirs() и Context.getExternalCacheDirs() методы могут возвращать несколько путей, включая как первичные, так и вторичные устройства.

          Затем вы можете выполнить итерацию над ними и проверить Environment.getStorageState() и File.getFreeSpace() , чтобы определить наилучшее место для хранения ваших файлов.

          Эти методы также доступны в ContextCompat в библиотеке поддержки-v4.

          6. Lollipop также ввел изменения и DocumentFile вспомогательный класс.

          getStorageState Добавлен в API 19, устаревший в API 21, использовать getExternalStorageState(File)

          Здесь отличный учебник для взаимодействия с доступом к хранилищу Framework в KitKat.

          Взаимодействие с новыми API-интерфейсами в Lollipop очень похоже (пояснение Джеффа Шарки).

          7. Android 7.0 предоставляет упрощенный API для доступа к внешним хранилищам хранения.

          Доступ к ограниченному каталогуВ Android 7.0 приложения могут использовать новые API для запроса доступа к определенным внешние хранилища, включая каталоги на съемных носителях таких как SD-карты.

          8. Изменения в Android O.

          Начиная с Android O, Storage Access Framework позволяет настраиваемые документы провайдерысоздавать дескрипторы файлов для поиска файлов, находящихся в удаленной источник данных.

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

          Для приложений, ориентированных на Android O, это поведение было исправлено. Приложение получает только разрешения, явно запрошенные. Однако, как только пользователь предоставляет разрешение на приложение, все последующие запросы на разрешения в этой группе разрешений автоматически само собой разумеющееся.

          Например, READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE .

          Смотрите еще:

          • Звездный юрист Юрист - юридические услуги (адвокат) Звёздный бульвар Телефоны: 8-919-722-05-32, 8-985-445-55-95 Сайт: www.mashenkof.ru E-mail: [email protected] Юридические услуги я оказываю уже более 9 лет. Основным из моих правил при оказании […]
          • Детское пособие в калининграде Выплаты и пособия на ребенка в Калининградской области и Калининграде в 2018 году Пособия и выплаты на детей в регионах Выплаты и пособия на ребенка в Калининградской области и Калининграде в 2018 году Детские пособия установлены […]
          • Образец заявления на принятие исполнительного листа судебным приставам Заявление о возбуждении исполнительного производства Заявление о возбуждении исполнительного производства подается судебному приставу-исполнителю вместе с исполнительным документом (исполнительным листом или судебным приказом). Именно по […]
          • Переселение с ветхого жилья в сыктывкаре Почему в Коми провалили программу по переселению из ветхого жилья? «Потолок ледяной, дверь скрипучая…» Проблема переселения жителей из ветхого и аварийного жилья в Коми была перезревшей еще до начала действия соответствующей программы в […]
          • Образование следственный комитет рб Следственный комитет Республики Беларусь Информация О компании: Свежие новости, фото и видео. Все о деятельности Следственного комитета. Громкие дела, ход и результаты расследований. Следственный комитет Республики Беларусь – единая и […]
          • Карта сбербанка для перечисления пенсии Как перевести пенсию на карту Сбербанка Перечисление пенсии на карту Сбербанка Получение пенсии на банковскую карточку является удобным вариантом получения пенсионерами своих денег. Теперь нет необходимости пенсионеру стоять в длинной […]
          • Какие пособие за первого ребенка Как получить выплаты за первого ребенка с 2018 года Демографическая перезагрузка О дополнительных мерах стимулирования рождаемости и перезагрузке демографической политики в России президент РФ Владимир Путин объявил на Координационном […]
          • Жалоба главе города Город-курорт Пятигорск Официальный сайт Письмо главе города Любой житель или даже гость может отправить письмо, обращение, жалобу или заявление Главе города и быть уверенным, что прочтет его лично Андрей Валериевич […]