Phonegap 获取 所有联系人 此版本是cordova 3.4的
调用系统的API 经过修改 迭代出所有联系人 贴上完整代码
文章结尾 提供Demo下载
以下介绍的 phonegap contacts 的 API有
从建立项目说起:
phonegap create my-app cd my-app phonegap run android
cd my-app cd plugins
cordova plugin add org.apache.cordova.contacts
cordova platform add android
cordova build
至此 contacts 插件已经生成并添加到项目当中去...
现在项目应该 有如下文件:
cordova-plugins.js 里面的文件是:
cordova.define(‘cordova/plugin_list‘, function(require, exports, module) { module.exports = [ { "file": "plugins/org.apache.cordova.contacts/www/contacts.js", "id": "org.apache.cordova.contacts.contacts", "clobbers": [ "navigator.contacts" ] }, { "file": "plugins/org.apache.cordova.contacts/www/Contact.js", "id": "org.apache.cordova.contacts.Contact", "clobbers": [ "Contact" ] }, { "file": "plugins/org.apache.cordova.contacts/www/ContactAddress.js", "id": "org.apache.cordova.contacts.ContactAddress", "clobbers": [ "ContactAddress" ] }, { "file": "plugins/org.apache.cordova.contacts/www/ContactError.js", "id": "org.apache.cordova.contacts.ContactError", "clobbers": [ "ContactError" ] }, { "file": "plugins/org.apache.cordova.contacts/www/ContactField.js", "id": "org.apache.cordova.contacts.ContactField", "clobbers": [ "ContactField" ] }, { "file": "plugins/org.apache.cordova.contacts/www/ContactFindOptions.js", "id": "org.apache.cordova.contacts.ContactFindOptions", "clobbers": [ "ContactFindOptions" ] }, { "file": "plugins/org.apache.cordova.contacts/www/ContactName.js", "id": "org.apache.cordova.contacts.ContactName", "clobbers": [ "ContactName" ] }, { "file": "plugins/org.apache.cordova.contacts/www/ContactOrganization.js", "id": "org.apache.cordova.contacts.ContactOrganization", "clobbers": [ "ContactOrganization" ] } ]; module.exports.metadata = // TOP OF METADATA { "org.apache.cordova.contacts": "0.2.8" } // BOTTOM OF METADATA });
res/xml 目录下 的config.xml
在config.xml 里面有
<feature name="Contacts"> <param name="android-package" value="org.apache.cordova.contacts.ContactManager" /> </feature>
现在大家只需要将工程导入到eclipse当中 使用官方APi语句在javascript中调用
将下方语句考到 assets目录下 www/index.html 当中 完全复制过去;
<!DOCTYPE html> <html> <head> <title>Contact 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() { // find all contacts with ‘ ‘ in any name field ,field 如果为空 则返回全部的 var options = new ContactFindOptions(); options.filter = ""; options.multiple = true; /* 查找关键字 名字: "displayName" , 电话号码:"phoneNumbers" //ContactField[]类型 */ var fields = ["displayName", "name", "phoneNumbers"]; navigator.contacts.find(fields, onSuccess, onError, options); } // onSuccess: Get a snapshot of the current contacts function onSuccess(contacts) { // 联系人与电话号码 全写在这儿 var aResult = []; for (var i = 0; contacts[i]; i++) { console.log("Display Name = " + contacts[i].displayName); if (contacts[i].phoneNumbers && contacts[i].phoneNumbers.length) { var contactPhoneList =[]; for (var j = 0; contacts[i].phoneNumbers[j]; j++) { // alert(contacts[i].phoneNumbers[j].type+" "+contacts[i].displayName+"---------" + contacts[i].phoneNumbers[j].value ); contactPhoneList.push( { ‘type‘ : contacts[i].phoneNumbers[j].type, ‘value‘ : contacts[i].phoneNumbers[j].value } ); }; aResult.push({ name:contacts[i].displayName, phone:contactPhoneList }); }; // } //迭代获取 联系人和号码 for (var i = 0; aResult[i]; i++) { for (var j = 0 ; aResult[i].phone[j]; j++) { alert(aResult[i].name +"--------"+ aResult[i].phone[j].type+"-----"+aResult[i].phone[j].value ); }; }; } // onError: Failed to get the contacts function onError(contactError) { alert(‘onError!‘); } function baozi(){ alert("S1");} function intent() { onDeviceReady(); } </script> </head> <body> <h1>Example</h1> <p>Find Contacts</p> <p><a href="#" onclick="showAlert(); return false;">Show Alert</a></p> <p><a href="#" onclick="playBeep(); return false;">Play Beep</a></p> <p><a href="#" onclick="baozi(); return false;">Vibrate</a></p> <p><a href="#" onclick="intent(); return false;">Html跳转到android界面</a></p> </body> </html>
上段代码 中的
var options = new ContactFindOptions(); options.filter = ""; options.multiple = true; var fields = ["displayName", "phoneNumbers"]; navigator.contacts.find(fields, onSuccess, onError, options); }
options.filter //过滤条件
options.multiple //是否 查询多个
fields //将要查询的 关键字
navigator.contacts.find (fields,onSuccess,onError , options ); // 查找操作
其中的onSuccess 是成功找到联系人后 返回后将执行的回调
查找关键字
名字: "displayName" ,
电话号码:"phoneNumbers" //ContactField[]类型
在注释之前 是js里面获取 所有联系的方式
注释之后是 方便测试的弹出窗口
点击 " Html跳转到android界面 " 就会弹出 alert 如下:
迭代 弹出所有联系人
至此 获取了所有的电话号码
顺道说一句
if (contacts[i].phoneNumbers && contacts[i].phoneNumbers.length) {}
工程下载 将phonegap的platforms导入到eclipse中
如果报错clear一下 查看导的lib包 有没有报错
如果还有错 那么就是您选用了 google的API 改成最新版的android API 就好了
如果导入工程遇到问题 可以查阅我此篇文章
Blog: http://blog.csdn.net/aaawqqq/article/details/20463183
Phonegap解决错误:Error initializing Cordova:Class not found:
http://blog.csdn.net/aaawqqq/article/details/21243869
Demo 下载地址:
http://download.csdn.net/detail/aaawqqq/7053769
Phonegap联系人 获取Contacts,布布扣,bubuko.com
原文:http://blog.csdn.net/aaawqqq/article/details/21375587