Cordova — Как получить доступ к хранилищу устройства?

#javascript #android #html #css #cordova

#javascript #Android #HTML #css #кордова

Вопрос:

Я разрабатываю приложение cordova, содержащее MP3-плеер, для этого мне нужно получить все MP3-файлы на устройстве, я знаю, как выполнить поиск на SD-карте (с помощью cordova.file.externalRootDirectory), но как получить доступ к классическому хранилищу устройства? (Где есть «Android», «DCIM», «Загрузить»… папки)

Заранее спасибо.

РЕДАКТИРОВАТЬ: cordova.file.DataDirectory не работает

Ответ №1:

Я использую плагин cordova-plugin-file , и у меня работает доступ к внутреннему файловому хранилищу

 var folderpath = cordova.file.dataDirectory   "Download/";
  

Структура каталогов Android

  • файлы: внутренний каталог хранилища файлов приложения
  • files-external: внешний каталог хранилища файлов приложения
  • sdcard: глобальный внешний каталог для хранения файлов (это корневой каталог SD-карты, если она установлена). У вас должно быть разрешение android..Разрешение WRITE_EXTERNAL_STORAGE на использование этого.
  • кэш: внутренний каталог кэша приложения
  • cache-external: каталог внешнего кэша приложения
  • ресурсы: пакет приложения (доступен только для чтения)
  • root: файловая система всего устройства
  • Каталог приложений: доступен только для чтения с ограниченным доступом. Копирование файлов в этот каталог возможно, но прямое чтение приводит к «файл не найден». Android также поддерживает специальную файловую систему с именем «documents», которая представляет подкаталог «/Documents /» в файловой системе «files».

Дополнительная информация в документе Apache

Комментарии:

1. У меня это выдает ошибку, Вот мой код: window.resolveLocalFileSystemURL(cordova.file.dataDirectory 'Music/', function (fileSystem) { var reader = fileSystem.createReader(); reader.readEntries( function (entries) { navigator.notification.alert('Entry: ' entries, null, 'RedSet', 'OK'); }, function (err) { navigator.notification.alert('Err! ' err, null, 'RedSet', 'OK'); }); }, function (err) { navigator.notification.alert('Error! ' err, null, 'RedSet', 'OK'); });