Не отображаются файлы, хранящиеся на устройстве Android с помощью плагина cordova -file

Я пытаюсь отобразить список файлов, которые хранятся на устройстве Android, в моем приложении Cordova, и я использую плагин cordova -file. Однако я не вижу файл, когда нажимаю кнопку просмотра в моем приложении, но вижу файл в системном приложении My Files android.

Вот список папок, которые я повторяю через

[cordova.file.externalRootDirectory,cordova.file.dataDirectory]

На телефоне с Android я вижу, что файлы bu делают следующее:

  1. выбрать / настройки / хранилище / внутреннее хранилище

  2. выбор исследовать

  3. В заголовке emnu написано MyFiles ›хранилище устройства

  4. выбрать данные или скачать ..

    На устройстве cordova.file.externalRootDirectory разрешите файл: /// storage / emulated / 0 / download

Однако я не вижу файлов

Вот мой код

$scope.showLocalFileOnAndroid = function () {
            $scope.showLocalAndroidFiles = true;
            var localURLs = [cordova.file.externalRootDirectory,cordova.file.dataDirectory
                            ];
            var index = 0;
            var i;
            var errorStr = '';
            var fileList = [];
            var addFileEntry = function (entry) {
                var dirReader = entry.createReader();
                dirReader.readEntries(
                    function (entries) {

                        var i;
                        for (i = 0; i < entries.length; i++) {
                            if (entries[i].isDirectory === true) {
                                // Recursive -- call back into this subdirectory
                                addFileEntry(entries[i]);
                            } else {
                                var ext = entries[i].name.split('.').pop();
                                if (ext === 'doc' || ext === 'docx' ||
                                    ext === 'rdf' || ext === 'pdf' || ext === 'txt' ||
                                    ext === 'odt') {

                                    fileList.push(entries[i]); // << replace with something useful
                                }
                                index++;
                            }
                        }
                    },
                    function (error) {
                        console.log('readEntries error: ' + error.code);
                        errorStr += '<p>readEntries error: ' + error.code + '</p>';
                    }
                );
            };
            var addError = function (error) {
                console.log('getDirectory error: ' + error.code);
                errorStr += '<p>getDirectory error: ' + error.code + ', ' + error.message + '</p>';
            };
            for (i = 0; i < localURLs.length; i++) {
                if (localURLs[i] === null || localURLs[i].length === 0) {
                    continue; // skip blank / non-existent paths for this platform
                }
                window.resolveLocalFileSystemURL(localURLs[i], addFileEntry, addError);
            }
            $scope.fileList = fileList;
            $scope.localFileError = errorStr;
        };

person user2570135    schedule 27.02.2017    source источник
comment
возможный дубликат вопроса без ответа здесь: stackoverflow.com/questions/40557762/   -  person Matthias    schedule 27.02.2017
comment
Спасибо .. Я видел этот ответ и скопировал часть кода, однако он не работает .. Файлы на устройстве хранятся во внутреннем хранилище \ root \ sdcard \ Download, и ни один из путей не определяется в этом коде. этот путь   -  person user2570135    schedule 27.02.2017
comment
это обычная проблема, еще один вопрос без ответа относительно Кордовы и папку Download.   -  person Matthias    schedule 28.02.2017
comment
вероятно, не проблема, но у вас cordova.file.dataDirectory дважды в массиве localURLs. Я не вижу для этого причины   -  person Matthias    schedule 28.02.2017
comment
Удаляю повторяющийся URL. Он не проходит через правильную папку в телефоне Android   -  person user2570135    schedule 28.02.2017
comment
возможно, это из-за разницы между file:///storage/emulated/0/download, которая, как я предполагаю, является смоделированной папкой загрузки, созданной Кордовой, а затем типичной папкой загрузки Android (к которой вы получаете доступ по телефону), например sdcard/Download?   -  person Matthias    schedule 28.02.2017
comment
Думаю, да, но как мне получить доступ к этой папке? Я пробовал file: /// sdcard / Download и ничего не получил от звонка   -  person user2570135    schedule 28.02.2017


Ответы (1)


Вот кое-что. Может, тебе придется сделать что-то подобное. Это, вероятно, не так легко переносится между устройствами, как использование плагина cordova.

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);

var localURLs = [cordova.file.externalRootDirectory,
                 cordova.file.dataDirectory, 
                 "file:///Download"]; // or "file:///sdcard/Download" or "file:///storage/Download" or "file:///storage/download" or something

Я использовал это как ссылка.

Возможно, все, что вам не хватало, - это звонок в requestFileSystem.

person Matthias    schedule 28.02.2017
comment
Спасибо, но у меня это не работает .. Это то, что я пытаюсь сделать, у меня есть файл типа ввода тега html, и я пытаюсь перечислить файл на устройстве ,,, На некоторых версиях android я вижу системный выбор файлов но я понятия не имею, как получить выбранный файл ... Итак, я решил прочитать папку android .. Теперь я не уверен, что делать дальше - person user2570135; 28.02.2017
comment
Я перехожу на API 22 на Android, и теперь я могу читать файл ... не уверен, что происходит .. - person user2570135; 01.03.2017