没有看到使用cordova -file插件存储在Android设备上的文件

时间:2017-02-27 16:15:08

标签: android cordova cordova-plugins cordova-plugin-file

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

这是我通过

迭代的文件夹列表
[cordova.file.externalRootDirectory,cordova.file.dataDirectory]

在Android手机上,我看到文件没有执行以下操作:

  1. 选择/设置/存储/内部存储
  2. 选择探索
  3. 在emnu上标题为MyFiles> device storage
  4. 选择数据或下载..

    在设备上 cordova.file.externalRootDirectory解析为file:/// storage / emulated / 0 / download

  5. 但是,我没有看到任何文件

    这是我的代码

    $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;
            };
    

1 个答案:

答案 0 :(得分:0)

Here's某事。也许你必须做这样的事情。尽管使用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

我使用this作为参考。

也许你所遗忘的只是对requestFileSystem的召唤。