我买了这本书“apress beginning phonegap”,但有些例子不起作用
在这个例子中我试图在我的Android设备上使用phoneGap获取我的SD卡的内容。
但我得到了一个 - > error.message : 9
回来了
我是移动开发的全新手,这就是我不知道可能出现什么问题的原因。
function onDeviceReady() {
window.resolveLocalFileSystemURI("file:///sdcard",onResolveSuccess, onError);
}
function onResolveSuccess(fileEntry) {
var directoryReader = fileEntry.createReader();
directoryReader.readEntries(onSuccess, onError);
}
function onSuccess(entries) {
document.getElementById("loading").innerHTML = "";
var ul = document.getElementById("file-listing");
for (var index = 0; index < entries.length; index++) {
var li = document.createElement('li');
li.innerHTML = entries[index].name;
ul.appendChild(li);
}
}
function onError(error) {
alert('code: ' + error.code + '\n'+ 'message: ' + error.message + '\n');
}
/** Called when browser load this page*/
function init(){
document.addEventListener("deviceready", onDeviceReady, false);
}
问题出在哪里?
答案 0 :(得分:2)
我很确定您在AndroidManifest.xml文件中缺少写入外部存储权限。尝试添加:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我愿意打赌你的问题会消失。
好吧,因为那不能解决你的问题,你可能想看看尝试请求file:/// mnt / sdcard的url,因为/ sdcard很多时候都可以成为sym链接。
然后,你可以通过以下方式获得更好的服务:
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError);
并且您的成功回调将为您提供一个文件系统,其root属性是目录条目,在Android上,这将是您的SD卡。
答案 1 :(得分:0)
ON模拟器: 在我的情况下,我创建的avd设备没有SD卡存储,因此它失败了,我在avd属性上创建了一个sdcard大小并修复了模拟器上的问题。
在物理设备上: 尝试通过另一个程序访问您的SD卡,看看是否有效,如果不是,您的SD卡可能有缺陷或失败。