contacts.find,可以去搜索设备通讯录里的联系人,找到的联系人对象会在一个数组里面,我们可以使用循环,去处理所有找到的联系人。
contacts.find 有四个参数 .. contactFields ,它可以指定想要查找的联系人里的字段 … contactSuccess 是成功以后执行的动作 … contactError 是失败的时候要做的事情 ..
最后一个参数是 contactFindOptions … 在这个参数里我们要指定搜索的关键词 … 还有是否要返回多个结果 …
index.html
先打开应用项目的 index.html … 在这里,我添加了一个 查找联系人 的按钮 .. 上面定义一个叫 find-contact 的 ID ..
index.js
再打开 index.js … 在 deviceready 发生以后监听了 查找联系人 按钮的点击事件 .. 点击这个按钮以后,会去执行 app 对象里的 findContact 函数 ..
在这个函数里先输入 navigator.contacts.find()
然后是这个方法的几个参数 … navigator.contacts.find(contactFields, app.onSuccess, app.onError, contactFindOptions)
在这个 contactFields 里面,我们可以定义想要查找的联系人的字段 ..
在它的上面输入 var contactFields = [] ; 这些字段会放在一个数组里,所以这里要加上一个方括号 … 然后是字段的名称 .. ['name', 'note']
name 里面包含联系人所有跟名字相关的内容 … note 是联系人的备注信息 …
注意这里我们指定了两个字段,这样找到联系人以后,也只有这两个字段的内容可以使用 … 比如你想输出联系人的电话,是不行的,除非在这里,你再指定一个 phoneNumbers 电话号码 …
contactFindOptions
下面再去定义一下 contactFindOptions .. var contactFindOptions = {};
相关的选项在一个对象里,所以这里要加上一组大括号 … 然后定义一下 filter 属性 … 它的值就是我们要查找的关键词 …
filter: "宁皓网",
又一个逗号分隔一下 … 再定义一下 multiple 属性 … 把它的值设置成 true .. 意思就是允许返回多个查找到的结果 ..
multiple: true
现在 findContact 做的事情就是,去查找通讯录里的名称还有备注字段里面包含 宁皓网 这几个字的联系人 …
成功以后 … 去执行 onSuccess 里面定义的东西 …
onSuccess
找到的结果会传递给这个函数 … 添加一个 contacts 参数 … 这个参数里面包含的就是找到的联系人 ..
我们可以先在控制台上输出找到的联系人的数量 …
console.log('找到 ' + contacts.length + ' 个联系人');
因为找到的结果是一个数组,所以,我们可以使用数组的 length 来输出数组里面的项目的个数 …
然后我们需要循环的输出找到的联系人的相关的信息 .. 这里用一个 for 语句 ..
for (var i = 0; i < contacts.length; i++) {}
在括号里我们需要指定一些参数 … 最开始我们设置了一个小 i,让它等于 0 ,然后去判断一下设置的条件,看看这个小 i 是不是小于找到的联系人的结果数 … 如果条件为真 … 那么就会去执行在后面大括号里的东西 … 判断完条件以后 …每一次循环, 我们都让这个小 i 的值加上 1 …
直到这个小 i 的值大于了找到的联系人的结果数 … 这样这个判断的条件都会为假 … 循环也就会结束 …
下面我们在大括号里,再去定义一下每一次循环的时候要做的事儿 ..
可以在控制台上输出找到的联系人的相关的信息 …
console.log(
'联系人姓名:' + contacts[i].name.formatted +
' 备注:' + contacts[i].note + '\n'
);
第一次循环的时候,这个 contacts 后面的方框号里的小 i 会是 0 ,也就是 contacts 这个数组里面的第一个项目 …
.name.formatted … 意思就是输出联系人的 名字 里面的格式化以后的名称 …
如果你想输出名字里面的其它的名称 … 比如 昵称 .. 你可以把 formatted 替换成 nickname …
保存一下 ….
演示
找到调试工具 ….
再去重新编译并且安装一下这个修改以后的应用 … 安装到模拟器的上面 … phonegap run --emulator ios
我们可以先打开通讯录去看一下 … 这里你会看到有王皓跟小雪这两个联系人 …
再返回到应用 … 点击 查找联系人 这个按钮 …
在控制台上,你会看到输出了找到的联系人 … 王皓 跟 小雪 这两个联系人里面的备注字段 … 都包含我们要查找的 宁皓网 这几个字 …
移除
下面我们可以再看一下 remove ,移除联系人的方法 … 回到 index.js .. 这里我们只需要在 查找联系人成功以后要做的事情里面 … 添加一行 contacts[i].remove();
这样就可以删除掉查找到的联系人 ..
保存 … 再重新去编译一下 ….
点击这个查找联系人 … 在控制台上会输出找到的结果 … 我们再点一下这个按钮 … 你会看到现在找到的结果是 0 … 因为点击这个按钮,会移除到找到的联系人 …
回到 通讯录 … 在这里,我们已经找不到 王皓 和 小雪 这两个联系人的信息了 …