Android разрешение на запись sd карты

Разрешение на запись в корень 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)
  • Перезагружаем аппарат.
  • На этом всё. После того, как ваше устройство загрузится, сторонние приложения смогут записывать свои данные в корень нашей флеш-карты.

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

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

    miradmin.ru

    Решаем проблемы с записью информации на карту памяти в 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 и добавляете в этих секциях строчки с кодом:

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

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

    iceandroid.net

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

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

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

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

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

    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. Получаем профит – карты отлично скачиваются и сохраняются на внешнюю карту.
    И так для любого приложения и без всякого рута!

    webhamster.ru

    Android разрешение на запись sd карты

    Я купил новый телефон Samsung Galaxy S5, и сразу столкнулся с проблемой в операционной системе Android. А точнее, версии Андроид 4.4 KitKat. В этой версии Андроид введена новая фишка разработчиков Google.

    Теперь приложениям запрещен доступ к редактированию файлов на SD карте! Это приводит к тому, что некоторые приложения неработоспособны!

    Я расскажу вам, как обойти эту проблему!

    Добрый день, уважаемые читатели нашего блога!

    На днях я купил себе новый телефон! Samsung Galaxy S5!

    НАСЛАЖДЕНИЕ НОВЫМ ТЕЛЕФОНОМ

    Поздравляю себя с удачной покупкой, о которой мечтал несколько лет! Телефон оказался замечательно быстрым, мощным, красивым и удобным!

    Ранее у меня уже был телефон HTC (ему уже около 4-5 лет) с Андроид системой. Один из первых телефонов с такой системой (на момент покупки). Я его изучил вдоль и поперек, перепрошивал систему несколько раз, выбрал прошивку Андроид, которая по функционалу много превосходила на тот момент официальную.

    Для тех, кто не в курсе, перепрошивка — это замена операционной системы телефона. Ну примерно как переустановка Windows на компьютере.

    Прошло много времени, вышло много версий Андроид (на момент покупки у меня была Андроид 2.2). Новые версии и телефоны, на которых они устанавливались, много превосходят мой старенький смартфон. Поэтому я был сильно удивлен мощью, быстротой и функциональностью.

    Наслаждался я около 4 суток. Затем наткнулся на проблему!

    ПРОБЛЕМА! Файловая система запрещает редактирование файла!

    После очередного обновления, операционная система телефона сама обновилась до версии Андроид 4.4

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

    braincolor.ru

    Универсальный способ записи на внешнюю 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 .

        qaru.site

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

        • Разрешение на запись на sd карту андроид Разрешение на запись на sd карту андроид Новые темы необходимо создавать только в корневом разделе! В дальнейшем они будут обработаны модераторами. Если Вы выложили новую версию программы, пожалуйста, […]
        • Планшет правила войны Правила Войны – Возрождение Правила Войны – Возрождение – Сегодня для мобильных устройств на базе Android выпускается бесчисленное количество стратегий, которые, если честно, находятся на уровне дешевых […]
        • Возврат на андроид Как вернуть товар оплаченный Android Pay Некоторые люди задумываются о том, как вернуть деньги, через программу бесконтактных платежей Андроид Пей. В этой инструкции мы расскажем как осуществляется возврат […]
    Закладка Постоянная ссылка.

    Обсуждение закрыто.