Как установить внешнее хранилище как не обязательное в файле манифеста?

У меня есть устройства MOTOROLA DROID ULTRA, которые не поддерживают внешнее хранилище.

Мой файл манифеста содержит разрешения

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Из-за этих разрешений я не вижу свое приложение на устройстве MOTOROLA DROID ULTRA.

Я знаю, как настроить разрешения, которые не требуются для других функций, которые я использую, как

Для камеры,

<uses-permission android:name="android.permission.CAMERA" />

Я использовал,

<uses-feature 
      android:name="android.hardware.camera" 
      android:required="false" />

  <uses-feature 
      android:name="android.hardware.camera.autofocus" 
      android:required="false" />

Как насчет внешнего хранилища?

2 ответа

Я понимаю, что ваше устройство не поддерживает внешнюю SD-карту, потому что я столкнулся с той же проблемой, поэтому мое решение может помочь вам

поэтому сначала вам нужно установить имя приложения ES File Explorer- это приложение покажет вам все папки файлов и сохраненные данные на вашем устройстве.

тогда имейте в виду одну вещь

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

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

File sdcard = Environment.getExternalStorageDirectory();
 Log.i("memory",sdcard) ;

поэтому, если ваше устройство не поддерживает SDCard, этот код в MainActivity.java вернет путь к папке его внутренней памяти, и путь будет напечатан в logcat .

затем Es Explorer вы можете посетить папку

Ваш Moto Droid технически использует и разрешает внешнее хранение, но не в обычном смысле; он эмулируется на внутренней SD-карте. Это означает, что вместо фактической внешней SD-карты она имеет эмулируемое местоположение, т.е. вместо /storage/sdcard0, фактический файл URI может выглядеть как /storage/emulated/0/

К счастью, нам не нужно об этом беспокоиться, и это отличный пример того, почему важно использовать класс Environment при определении местоположения файла:File storageDirectory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+*myFileName*); вместо File storageDirectory = new File(/sdcard/*myFileName*)

Дайте нам знать, если вы ответили, что нашли решение своего вопроса.

Другие вопросы по тегам