猫爷 发表于 2014-1-27 19:07:26

PhoneGap的使用

我在学习PhoneGap开发的时候遇到了一个问题,在学习到通讯录部分时,发现API无法正常使用。我所用的代码是官方给出的例子

<!DOCTYPE html>
<html>
<head>
<title>Contact Example</title>
<script src="phonegap.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">       
    // 等待加载PhoneGap       
    document.addEventListener("deviceready", onDeviceReady, false);       
    // PhoneGap加载完毕        function onDeviceReady()
    {        
      var myContact = navigator.service.contacts.create({"displayName": "Test User"});        
      myContact.gender = "male";        
      console.log("The contact, " + myContact.displayName + ", is of the " + myContact.gender + " gender");       
    }
</script>
</head>
<body>
<h1>Example</h1>
<p>Create Contact</p>
</body>
</html>
最初我使用的环境是ANDROID 4.4+PhoneGap 2.9.0 在LOGCAT中并没有出现响应的信息,后来将console.log("The contact, " + myContact.displayName + ", is of the " + myContact.gender + " gender");这一句换成了alert("xxx");也并没有弹框,于是再看LOGCAT中的信息发现了一句:Unable to open asset URL: file:///android_asset/www/cordova_plugins.js。后来考虑到可能是2.9.0版本不兼容4.4,于是又换了2.2版本的SDK,依然无法正常,运行之后在LOGCAT中没有出现红色的信息,但是依然无法使用通讯录,于是我又尝试了PHONEGAP中国上的另一个例子
<!DOCTYPE html>
<html>
<head>
<title>Contact Example</title>
<script src="phonegap.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
// 等待加载PhoneGap
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap加载完毕
function onDeviceReady() {

// 从全部联系人中进行搜索
var options = new ContactFindOptions();
options.filter="";
var filter = ["displayName","addresses"];
navigator.service.contacts.find(filter, onSuccess, onError, options);
}

// onSuccess: 返回当前联系人结果集的快照
function onSuccess(contacts) {
// 显示所有联系人的地址信息
for (var i=0; i<contacts.length; i++) {
   for (var j=0; j<contacts.addresses.length; j++) {
    alert("Pref: " + contacts.addresses.pref + "\n" +
   "Type: " + contacts.addresses.type + "\n" +
   "Formatted: " + contacts.addresses.formatted + "\n" +
   "Street Address: "+ contacts.addresses.streetAddress + "\n" +
   "Locality: "+ contacts.addresses.locality + "\n" +
   "Region: "+ contacts.addresses.region + "\n" +
   "Postal Code: "+ contacts.addresses.postalCode + "\n" +
   "Country: "+ contacts.addresses.country);
   }
}
}

// onError: 获取联系人结果集失败
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<h1>Example</h1>
<p>Find Contact</p>
</body>
</html>
之后依然没有什么效果,求管理大哥帮我一下

猫爷 发表于 2014-1-27 19:29:35

补充一下其实在运行的时候还有一处报错信息是TypeError: Result of expression 'navigator.service' is not an object. at file:///android_asset/www/Index.html:17,不知道和我的问题有没有关系,因为之前使用PHONEGAP事件都正常因此感觉应该不是配置的错误

初来咋到 发表于 2014-1-28 10:42:48

新版本的cordova用的是navigator.contacts.create()创建联系人,不是navigator.service.contacts.create

admin 发表于 2014-1-28 10:43:41



别人写的代码 你看看 希望对你有帮助

猫爷 发表于 2014-1-28 11:10:08

admin 发表于 2014-1-28 10:43
别人写的代码 你看看 希望对你有帮助

运行以后又出错了提示unfortunatly,test4 has stopped
页: [1]
查看完整版本: PhoneGap的使用