cordova 3.1.0-0.2.0
Droid Razr M
Android 4.1.2
Windows 7
PhoneGap / Cordova新手。从http://docs.phonegap.com/en/3.1.0/cordova_file_file.md.html#File运行其中一个文件系统演示。使用“cordova run android”编译代码并在通过USB连接的手机上运行。
问题#1:当应用程序首次启动时,我会发出两次警报(“1”),然后再没有其他情况。
问题#2:当我通过点击按钮启动代码时,我得到以下警报模式:1,2,3,3,4,6,5,7,4,6,5,7。其中一些基于代码流是有意义的,但大多数都是触发两次。
我怀疑问题#2是由第一次尝试中挂出的一些异步调用引起的,但无论我等待多长时间,这些事件都不会触发,直到我通过按钮启动代码。
那么,为什么requestFileSystem调用失败,即使它正在等待设备准备,为什么其他代码混合在一起呢?
任何想法都表示赞赏。
<!DOCTYPE html>
<html>
<head>
<title>FileReader Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
alert("1");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
alert("2");
fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
alert("3");
fileEntry.file(gotFile, fail);
}
function gotFile(file) {
alert("4");
readDataUrl(file);
alert("5");
readAsText(file);
}
function readDataUrl(file) {
alert("6");
var reader = new FileReader();
reader.onloadend = function (evt) {
console.log("Read as data URL");
console.log(evt.target.result);
};
reader.readAsDataURL(file);
}
function readAsText(file) {
alert("7");
var reader = new FileReader();
reader.onloadend = function (evt) {
console.log("Read as text");
console.log(evt.target.result);
};
reader.readAsText(file);
}
function fail(error) {
alert("8");
console.log(error.code);
}
</script>
</head>
<body>
<h1>Example</h1>
<p>Read File</p>
<button onclick="onDeviceReady();">Read File</button>
</body>
</html>