如何在基于Apache Cordova的应用程序中将文件写入SD卡(外部/可移动文件)中?

时间:2019-02-18 17:46:41

标签: android cordova cordova-plugins sd-card

要为我要提出的问题提供背景信息,请访问此link

基本上,我想知道是否只限于在SD卡中以固定和预定义的路径创建文件,或者相反,有某种方法(无论使用哪种插件)在该修复路径之外创建文件。

无法使用cordova-plugin-file插件在SD卡中创建文件。通过使用cordova.plugins.diagnostic插件,我发现可以在修订和预定义路径下创建文件。这是用于此目的的代码:

cordova.plugins.diagnostic.getExternalSdCardDetails(onSuccess_getExternalSdCardDetails, onError_getExternalSdCardDetails);

onSuccess_getExternalSdCardDetails : function(entryArray) {
    console.log("entryArray.length:" + entryArray.length);

        for (i = 0; i < entryArray.length; i++) {
            if (entryArray[i].type == "root") {
            sdCardPath = entryArray[i].filePath;
            break;
        }

    console.log("sdCardPath:" + sdCardManager.sdCardPath);
}

由于有了这些代码,我设法查看了entryArray对象中对象的详细信息,该对象设置为调用cordova.plugins.diagnostic.getExternalSdCardDetails()方法时调用的回调函数。该对象是:

entryArray[0]:
    {canWrite:false
    filePath:"file:///storage/9634-B08B"
    freeSpace:10907648000
    path:"/storage/9634-B08B"
    type:"root"
    }

    entryArray[1]:
    {canWrite:true
    filePath:"file:///storage/9634-B08B/Android/data/es. ... .myappName/files"
    freeSpace:10907648000
    path:"/storage/9634-B08B/Android/data/es. ... .myAppName/files"
    type:"application"
    }

我看到我的SD卡路径为file:///storage/9634-B08B,但这很好,但令我惊讶的是,我只能在file:///storage/9634-B08B/Android/data/es. ... .myappName/files路径下写入想要的文件,而无法创建文件超出了该路径。

我的问题是我是否只限于在该路径下创建文件,或者相反,还有其他方法(也许使用其他插件)在该路径之外创建文件,但始终在SD卡中创建文件(例如, file:///storage/9634-B08B/myFiles)。 谢谢。

0 个答案:

没有答案