视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HTML5通讯录获取指定多个人的信息
2020-11-27 15:04:56 责编:小采
文档


这篇文章主要介绍了详解HTML5+通讯录获取指定多个人的信息 ,非常具有实用价值,需要的朋友可以参考下。

本文介绍了HTML5通讯录获取指定多个人的信息,具体如下:

一、获取多个人的信息:要解决通讯录导入多个人的信息之前,要解决获取多个人的信息。我通过plus.contacts.getAddressBook和address.find的套用把通讯录里面的所有联系人的id和displayName获取出来,然后通过自己写的通讯录获取页面显示出来。

1、解决这个问题首先你要自己写一个js通讯录,这样可以把你所有联系人首字母分离出来,并且旁边可以跳转到你要的首字母。

2、解决获取所有联系人信息

plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function(addressbook) { //获取通讯录信息
 // 可通过addressbook进行通讯录操作
 addressbook.find(null, function(contacts) {
 var username = new Array();
 var LinkList = new LinkedList();
 if(contacts.length > 0) { //获取当前通讯录里面所有人
 for(var i = 0; i < contacts.length; i ) {
 username[i] = contacts[i].displayName "-" contacts[i].id; //连接id和username,为后面筛选最准备
 }
 //这下面的代码是把所有联系人的信息分类,这就涉及到了自己写的JS页面代码
 LinkList = sortPY(username); //把联系人数组分类
 //LinkList.show();
 createLiCheckBox(LinkList); //分类信息显示至页面,我使用checkBox进行多个联系人选择
 }

 }, function(e) {
 alert("Find contact error: " e.message);
 });

 }, function(e) {

 });

二、从通讯录导入多个选定的个人信息:解决这个问题在先前创建通讯录页面的时候就一定要把联系人的id放在在页面上(使用display隐藏),这样我获取被选中的checkBox的时候就可以直接获取id,并且把这些id放到一个数组里面。再通过plus.contacts.getAddressBook和address.find的套用把这些id的联系人信息筛选出来。

1、解决使用checkBox获取联系人id,这里我使用了JQuery。

//筛选已经被选中的checkbox
 $("input:checked").each(function() {
 var index = $(this).parent().prev().children('label').text(); //获取id
 var name = $(this).parent().prev().children('p').text(); //获取姓名
 username.push(name);
 usernameIndex.push(index);
 });

2、解决把这些index放到find里面进行筛选信息,把特定id下面的联系人信息拿出来

plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function(addressbook) { //获取通讯录信息
 for(var j = 0; j < username.length; j ) {//循环所选取的联系人,记得循环一定要放在这里,一开始我放在 plus.contacts.getAddressBook外面是错误
 addressbook.find(null, function(contacts) {
 console.log("进入查询");
 for(var i = 0; i < contacts.length; i ) {//无论是否为多个信息,一定要循环数组
 console.log("进入循环");
 //var id = contacts[i].id;
 var displayname = contacts[i].displayName;
 var phone = "";
 var emails = "";
 var dates = "";
 var remark = "";
 if(contacts[i].phoneNumbers.length > 0) {//这里需要判断是否为空,为空的数组没有index=0;
 phone = contacts[i].phoneNumbers[0].value;
 } else {
 phone = contacts[i].phoneNumbers;
 }

 if(contacts[i].emails.length > 0) {//这里需要判断是否为空,为空的数组没有index=0;
 emails = contacts[i].emails[0].value;
 } else {
 emails = contacts[i].emails;
 }

 var dateNum = new Date(contacts[i].birthday);//这里的birthday是number类型!!!官方手册坑爹?
 dates = dateNum.getFullYear() "." (dateNum.getMonth() 1) "." dateNum.getDate();
 remark = contacts[i].note;

 var getContact = {//把所有信息放到一个json里面
 contactName: displayname,
 sex: "",
 department: "",
 positions: "",
 tel: "",
 phone: phone,
 eMail: emails,
 birthday: dates,
 hobby: "",
 remark: remark
 };

 //这下面是我的业务代码了,这里大家可以写自己的信息
 //createContactTable(db);
 //InsertContact(db, getContact); //多个信息插入有线程安全的问题出现!!!!!!!
 }
 //console.log(username.length); 
 }, function(e) {
 console.log("查询错误");
 }, { 
 //这里面的筛选非常重要!!!这样才能选出匹配的信息
 filter: [{
 logic: "or",
 field: "id",
 value: usernameIndex[j]
 }],
 multi: false
 });
 }
 }, function(e) {
 console.log("打开通讯录错误");
 });

下载本文
显示全文
专题