【发布时间】:2014-02-20 10:28:07
【问题描述】:
PhoneGap 3.3 文件插件在 Android 上无法与我一起使用,我尝试了 getFile 和 getDirectory,但一直给我异常
02-20 12:24:34.997: W/System.err(32109): java.net.MalformedURLException: No installed handlers for this URL
02-20 12:24:34.997: W/System.err(32109): at org.apache.cordova.file.FileUtils.getFile(FileUtils.java:684)
02-20 12:24:35.007: W/System.err(32109): at org.apache.cordova.file.FileUtils.access$5(FileUtils.java:679)
02-20 12:24:35.007: W/System.err(32109): at org.apache.cordova.file.FileUtils$16.run(FileUtils.java:349)
02-20 12:24:35.017: W/System.err(32109): at org.apache.cordova.file.FileUtils$24.run(FileUtils.java:473)
02-20 12:24:35.017: W/System.err(32109): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-20 12:24:35.017: W/System.err(32109): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-20 12:24:35.017: W/System.err(32109): at java.lang.Thread.run(Thread.java:841)
JavaScript 代码
downloadAgendaPage = function () {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
console.log("Emaish: FileSystem Requested");
console.log("Emaish: fileStream.name = " + fileSystem.name);
console.log("Emaish: fileStream.root.name = " + fileSystem.root.name);
fileSystem.root.getFile("text.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
console.log("Emaish: File Gotten");
var uri = encodeURI("http://****/data/MYOEB2013_Agenda.ics");
console.log("Emaish: uri:" + uri);
var sPath = fileEntry.fullPath.replace("text.txt", "Agenda.ics");
console.log("Emaish: sPath:" + sPath);
fileEntry.remove();
var fileTransfer = new FileTransfer();
fileTransfer.download(
uri,
sPath,
function (theFile) {
console.log("download complete: " + theFile.toURI());
//showLink(theFile.toURI());
alertify.alert("Agenda downloaded to " + theFile.toURI());
},
function (error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code: " + error.code);
}
);
}
Console.log 结果
02-20 16:15:37.205: I/chromium(23491): [INFO:CONSOLE(59)] "Emaish: FileSystem Requested", source: file:///android_asset/www/js/agenda.js (59)
02-20 16:15:37.205: I/chromium(23491): [INFO:CONSOLE(60)] "Emaish: fileStream.name = persistent", source: file:///android_asset/www/js/agenda.js (60)
02-20 16:15:37.205: I/chromium(23491): [INFO:CONSOLE(61)] "Emaish: fileStream.root.name = ", source: file:///android_asset/www/js/agenda.js (61)
【问题讨论】:
-
您能提供更多信息吗?你作为parmater传递了什么?
-
我更新了问题以显示 javascript 代码
-
日志结果 02-20 16:15:37.205: I/chromium(23491): [INFO:CONSOLE(59)] "Emaish: FileSystem Requested", source: file:///android_asset/ www/js/agenda.js (59) 02-20 16:15:37.205: I/chromium(23491): [INFO:CONSOLE(60)] "Emaish: fileStream.name = persistent", 来源: file:// /android_asset/www/js/agenda.js (60) 02-20 16:15:37.205: I/chromium(23491): [INFO:CONSOLE(61)] "Emaish: fileStream.root.name = ",来源: file:///android_asset/www/js/agenda.js (61)
-
嗯,奇怪 - 看起来很理智。我建议打开 org.apache.cordova.file.FileUtils 并调试它说它崩溃的行。至少这样你就可以知道它正在尝试解决哪条路径,以及可能发生错误的原因。
-
值为:baseURLstr = "/" , path = "text.txt" 执行后 inputURL = new LocalFilesystemURL(baseURLstr);结果: inputURL.filesystemName 为 null 并且 inputURL.fullPath 为 null
标签: android file cordova exception