Intereting Posts
КоординаторLayout испортил всплывающее положение setError Точная процедура добавления «jfeinstein10 / SlidingMenu» в проект андроида Searchview не закрывается правильно на FIRST back press (это только потеря фокуса) Как добавить EditText в listview и динамически получить его значение во всех строках? Андроид Gradle javadoc не существует Pdf viewer api / library для Android-приложения? Обработка изменений идентификатора регистрации в Google Cloud Messaging на Android Ошибка при создании нового проекта в студии android Совместное использование объекта между действиями Предоставляйте бесплатные услуги более ранним покупателям Как создать векторные чертежи для Android? Android http, связанный с OkHttp Dont, работает Android ListView с флажком и всеми интерактивными Почему Google использует Canvas в представлении списка контактов приложения Gmail? PendingIntent работает правильно для первого уведомления, но неправильно для остальных

Некоторые устройства Android рассматривают внутреннее хранилище как SD-карты и внешнее хранилище как EXTSD

У меня есть группа устройств Android от разных поставщиков.

Некоторые из них прикрепляют / mnt / sdcard к внутреннему хранилищу и / mnt / extsd к внешнему хранилищу (сценарий 1), а другие присоединяют / mnt / sdcard к внешнему хранилищу (сценарий 2)

Я думаю, что второй сценарий является стандартным, так как API Android предоставляет дескриптор этого пути. Теперь проблема заключается в том, что в сценарии 1 /mnt/extsd становится только для /mnt/extsd даже с разрешением WRITE_EXTERNAL_STORAGE !

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

Есть ли обходной путь для этого, поэтому я могу писать в папку extsd?

Solutions Collecting From Web of "Некоторые устройства Android рассматривают внутреннее хранилище как SD-карты и внешнее хранилище как EXTSD"

 Environment.getExternalStorageState() returns path to internal SD mount point like "/mnt/sdcard" 

Environment.getExternalStorageDirectory() относится к тому, что производитель устройства считается «внешним хранилищем». На некоторых устройствах это съемный носитель, например SD-карта. На некоторых устройствах это часть вспышки на устройстве. Здесь «внешнее хранилище» означает «материал, доступный через режим USB Mass Storage при установке на хост-машине», по крайней мере для Android 2.x и выше.

 But the question is about external SD. How to get a path like "/mnt/sdcard/external_sd" (it may differ from device to device)? 

Android не имеет понятия «внешний SD», кроме внешнего хранилища, как описано выше.

Если производитель устройства выбрал внешнюю память на борту, а также имеет SD-карту, вам необходимо связаться с этим производителем, чтобы определить, можете ли вы использовать SD-карту (не гарантируется) и какие правила предназначены для Используя его, например, какой путь использовать для него.

На корневом устройстве вы можете изменить /system/etc/permissions/platform.xml, чтобы «исправить» проблему с разрешениями. Следующие работали для меня:

  • Adb pull /system/etc/permissions/platform.xml
  • Измените файл platform.xml таким образом, чтобы media_rw был включен в разрешение WRITE_EXTERNAL_STORAGE следующим образом:

     <permission name="android.permission.WRITE_EXTERNAL_STORAGE" > <group gid="sdcard_rw" /> <group gid="media_rw" /> </permission> 
  • Adb push platform.xml /system/etc/permissions/platform.xml

  • Перезапустить устройство

Единственная работа, которую я нашел до сих пор, чтобы получить доступ на запись на устройстве, – это укоренение устройства 🙁

Samsung обеспечивает работу с манифестной записью

Более подробная информация приведена в следующих ссылках

http://www.xda-developers.com/android/android-3-2-code-inadvertently-preventing-write-access-to-external-storage/

а также

http://www.chainfire.eu/articles/113/Is_Google_blocking_apps_writing_to_SD_cards_/

Выдержки:

Казалось бы, у Google есть ошибка в коде AOSP, который был введен в Android 3.2, что влияет на то, как ОС обрабатывает USB-накопитель и может препятствовать доступу на запись к SD-картам и USB-накопителям. XDA Elite Recognized Developer, старший модератор и редактор новостей Chainfire подводит итог этой проблеме в своем блоге:

«Раньше приложение запрашивало разрешение« WRITE_EXTERNAL_STORAGE », которое предоставляло бы доступ на запись ко всем внешним хранилищам (пользователь / группа« sdcard_rw »). По-видимому, это было изменено только для предоставления доступа на запись к первичному внешнему хранилищу. Второе разрешение было введено под названием «WRITE_MEDIA_STORAGE», которое предоставило бы доступ к другим внешним хранилищам (пользователь / группа «media_rw»).

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