После прочтения документации по хранению файлов в Android, я вижу, что внешнее хранилище может включать в себя как съемную SD-карту, так и хранилище, которое является внутренним для устройства, то есть не снимается. Есть ли способ различать съемное хранилище и несъемное хранилище при выборе сохранения файла во внешнем хранилище?Внешнее хранилище Android против SD-карты
ответ
Я думаю, что вы не можете надежно различать внутреннее и внешнее хранилище (SD).
На первый взгляд может показаться, что вы можете использовать что-то вроде Environment.isExternalStorageRemovable()
, но это ненадежно, потому что ваше «основное внешнее» устройство хранения вполне может быть внутренней памятью устройства, а не SD-картой.
Док для Environment.getExternalStorageDirectory()
состояний:
Примечание: не следует путать слово "внешний" здесь. Этот каталог лучше воспринимать как медиа/общую память. Это файловая система, которая может хранить относительно большой объем данных и совместно используется во всех приложениях (не обеспечивает разрешения). Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище в устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере.
В качестве примера, мой LG G4 имеет установлен внешний SD карта, и я могу видеть его с ADB (external_SD
):
$ adb shell ls -la /storage/
drwx------ root root 2015-02-28 01:10 USBstorage1
drwx------ root root 2015-02-28 01:10 USBstorage2
drwx------ root root 2015-02-28 01:10 USBstorage3
drwx------ root root 2015-02-28 01:10 USBstorage4
drwx------ root root 2015-02-28 01:10 USBstorage5
drwx------ root root 2015-02-28 01:10 USBstorage6
dr-xr-xr-x root root 2015-02-28 01:10 emulated
drwxrwx--x root sdcard_r 2015-07-31 08:19 external_SD
lrwxrwxrwx root root 2015-02-28 01:10 sdcard0 -> /storage/emulated/legacy
Однако различные интерфейсы API для внешних возвращаемых значений хранения, доказать, что устройство использует внутреннюю память в качестве «основного» внешнего хранения:
- Environment.getExternalStorageState: смонтированного
- Environment.isExternalStorageEmulated: правда
- Environment.isExternalStorageRemovable: ложные
- Context.getExternalCacheDir:/хранение/эмулировать /0/Android/data/com.codeblast.storagetype/cache
- Context.getExternalFilesDir:/хранение/эмулировать /0/Android/data/com.codeblast.storagetype/files
Выполнение кода на эмуляторе без внешней SD-карты возвращает точно такие же результаты.
Таким образом, вы не можете предположить, что /mnt/sdcard
означает физическую SD-карту.
Возможно, вы пересмотрели то, что вы на самом деле пытаетесь выполнить, а не пытаетесь определить тип хранилища. :-)
- 1. Внешнее хранилище в Android
- 2. Внешнее хранилище на android
- 3. Внешнее хранилище Android
- 4. Разрешение на внешнее хранилище Android
- 5. Внутреннее и внешнее хранилище Android
- 6. Внешнее хранилище Android не синхронизировано
- 7. Внешнее хранилище USB на Android
- 8. Внешнее хранилище не установлено
- 9. phonegap внешнее хранилище
- 10. Сохранение во внешнее хранилище
- 11. Android - Найти все внутреннее и внешнее хранилище
- 12. Создание/запись файлов на внешнее хранилище Android
- 13. Android HTC/Sony Внешнее хранилище Разрешение Отказано
- 14. Как использовать внешнее хранилище в android
- 15. Запись на внешнее хранилище в Android 6.0
- 16. Android, получающий внешнее хранилище Абсолютный путь
- 17. Spark RDD Внешнее хранилище
- 18. Уникально идентифицировать внешнее хранилище
- 19. Внутреннее и внешнее хранилище
- 20. Внешнее хранилище XenServer
- 21. Внешнее хранилище (доступно через приложения)
- 22. Запись на внешнее хранилище filenotfoundexception
- 23. Внешнее хранилище для внутреннего хранилища
- 24. Протрите внешнее хранилище не работает
- 25. FileProvider и вторичное внешнее хранилище
- 26. Возможно ли установить крючок на внешнее хранилище?
- 27. Внешнее хранилище и HTC One V
- 28. Как сохранить загруженные файлы во внешнее хранилище
- 29. Возможно ли потребовать внешнее хранилище на устройстве Android.
- 30. Загрузите файл с веб-сервера в внешнее хранилище android
http://stackoverflow.com/questions/7616974/how-to-check-internal-and-external-storage-if-exist –
http://stackoverflow.com/questions/12087510/check- если-заместитель SDCard-это-настоящее-логическое-это-всегда-правда –