cordova在sdcard中创建一个文件夹 - 内部或外部

时间:2016-05-07 16:05:01

标签: cordova directory android-sdcard

function creatingFolder(fileSystem) {
           var entry = fileSystem.root;
            entry.getDirectory("productpictures", {create: true, exclusive: false}, win, error);
            window.newfolder = fileSystem.root.toURL()+"/productpictures";

        }

       function win(dir) {
          alert("Created dir with name: "+dir.name);
          alert("Created dir at: "+dir.toURL());
          alert("Created dir NativePath: " + dir.nativeURL);
          alert('done '+window.newfolder);
        }

       function error(error){
              alert('hmm: '+error.code+' message: '+error.message);
       }

好的,所以[productpictures]是我的应用程序将创建的文件夹,应用程序用户可以将文件下载到此[productpictures]文件夹中。我的问题是如何让我的应用用户在关闭应用后访问此文件夹[productpictures]。现在,当我在真正的Android设备上创建此文件夹时,路径为:file:///data/data/com.packagename/files/files/productpictures。

那么我们是否可以在其他地方创建此文件夹,Android设备用户即使在关闭应用后也可以轻松访问。我想在sdcard / productpictures中创建这个文件夹[productpictures],或者在Android设备的Android照片库或下载文件夹中创建。

我试过的另一个代码,但没有用;

function creatingFolder(fileSystem) {
           var entry = fileSystem.root;
            entry.getDirectory(cordova.file.externalRootDirectory+"/productpictures", {create: true, exclusive: false}, win, error);
            window.newfolder = cordova.file.externalRootDirectory+"/productpictures";

        }

所以,没有找到任何在线资源来实现这一目标。我想要这个功能,因为用户应该能够通过电子邮件发送或共享[productpictures]文件夹中的文件,并将此文件夹放在像file://data/data/com.package/files/files/productpictures这样的位置太复杂了。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

此示例代码允许您在Android的外部根目录和iOS中的文档文件夹中创建文件夹:

    function writeFile() {
            if (sessionStorage.platform.toLowerCase() == "android") {
                window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemSuccess, onError);
            } else {
                window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onError);
            }
    }    

    function onError(e) {
        alert("onError");
    };

    function onFileSystemSuccess(fileSystem) {
        var entry = "";
        if (sessionStorage.platform.toLowerCase() == "android") {
            entry = fileSystem;
        } else {
            entry = fileSystem.root;
        }
        entry.getDirectory("Folder_Name", {
            create: true,
            exclusive: false
        }, onGetDirectorySuccess, onGetDirectoryFail);
    };

    function onGetDirectorySuccess(dir) {
        dir.getFile(filename, {
            create: true,
            exclusive: false
        }, gotFileEntry, errorHandler);
    };

    function gotFileEntry(fileEntry) {
        // logic to write file in respective directory
    };

    function errorHandler(e) {
        // handle error
    }