Как установить внешнее хранилище как не обязательное в файле манифеста?
У меня есть устройства 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*)
Дайте нам знать, если вы ответили, что нашли решение своего вопроса.