1

我正在尝试在我的cordova应用程序中显示存储在android设备上的文件列表,并且我正在使用cordova -file插件。但是,当我在我的应用程序中选择浏览按钮时没有看到该文件,但我看到了系统“我的文件”安卓应用程序中的文件。

这是我正在迭代的文件夹列表

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

在 android 手机上,我看到文件 bu 执行以下操作:

  1. 选择/设置/存储/内部存储

  2. 选择探索

  3. 在 emnu 上,标题显示 MyFiles>device storage

  4. 选择数据或下载..

    在设备上 cordova.file.externalRootDirectory 解析为 file:///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;
        };
4

1 回答 1

0

这里有一些东西。也许你必须做这样的事情。不过,这可能不像使用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.

于 2017-02-28T17:05:49.743 回答