包含获取通讯录、添加联系人、修改联系人、删除联系人、拨打电话、获取通话记录、添加通话记录、删除通话记录、获取短信记录、发送短信、获取电话号码运营商和归属地等功能。
复制代码- <!-- 读写联系人权限 -->
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
- <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
- <!--读写手机通话记录权限-->
- <uses-permission android:name="android.permission.READ_CALL_LOG" />
- <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
- <!-- 打电话 -->
- <uses-permission android:name="android.permission.CALL_PHONE" />
- <!--读写短信信息的权限-->
- <uses-permission android:name="android.permission.READ_SMS" />
- <uses-permission android:name="android.permission.RECEIVE_SMS"/>
- <uses-permission android:name="android.permission.SEND_SMS" />
复制代码const lunaContact = uni.requireNativePlugin("Luna-Contact");
复制代码- checkPermissions({
- permissionList:[], //见注释1,格式:["权限1","权限2"],必填
- },res=>{
- console.log(res);
- res={
- "code":0,
- "checked":true/false,
- "message":"权限全部通过/有权限未通过",
- "unPermissionList":[],//未通过权限列表
- }
- res={
- "code":1,
- "message":"权限检查失败:",
- }
- });
复制代码getSettings();
在调用接口之前,请先获取相应的权限
复制代码- getContacts({
- type: 0, //见注释2,默认值0:查询全部的联系人,可选
- param:"",//见注释2,默认值"",可选
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "获取成功",
- "data":"获取的数据"
- }
- data=[{
- "id": "105", //id每个手机中生成的都不相同,即使是相同联系人
- "name": "这是一个测试联系人",
- "number": "18650246538"
- "operator": "中国联通",
- "address": "福建省莆田市",
- },
- ......
- ]
- res={
- "code": 1,
- "message": "获取失败",
- }
- })
每次调用,都会新增一条联系人记录
即使联系人姓名和电话号码都与已有记录相同,也会新增一条id不同的记录
可以通过【2.1获取联系人】接口查看详情
因为在一般的手机通讯里,姓名和号码相同时,只会显示一条记录,若姓名相同,号码不同,会显示两条记录
若想实现在同一个联系人姓名下,添加多个号码,可以配合使用【2.3修改联系人】接口
复制代码- addContacts({
- name:"", //姓名,必填
- number:"",//号码,必填
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "添加成功",
- }
- res={
- "code": 1,
- "message": "添加失败:",
- }
- })
复制代码- editContacts({
- id: "", // 联系人id,通过【2.1获取联系人】接口查询出,必填
- name: "", // 姓名,原姓名或修改后的姓名,必填
- addedNumbers: [], // 新增的号码,格式:["新增的号码1","新增的号码2"],可选
- deletedNumbers: [],// 删除的号码,格式:["删除的号码1","删除的号码2"],可选
- modifiedNumbers:[] // 修改的号码,格式:[{original:"原号码1",modified:"修改后的号码1"}],可选
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "修改成功"
- }
- res={
- "code": 1,
- "message": "修改失败"
- }
- res={
- "code": 2,
- "message": "没有查询到联系人数据",
- }
- })
复制代码- deleteContacts({
- type: 1, //见注释3,必填
- param: "", //见注释3,必填
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "删除成功",
- }
- res={
- "code": 1,
- "message": "删除失败",
- }
- res={
- "code": 2,
- "message": "没有查询到联系人数据",
- }
- })
复制代码callUp("电话号码")
复制代码- getPhoneNumberInfo("电话号码",res=>{
- console.log(res);
- res={
- "data": {
- "operator": "中国移动", //运营商
- "address": "北京" //归属地
- }
- }
- })
在调用接口之前,请先获取相应的权限
复制代码- getCallLogs({
- type: 0, //见注释4,默认值0:查询全部的通话记录,可选
- param:"",//见注释4,默认值"",可选
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "获取成功",
- "data":"获取的数据"
- }
- //type=0,1,2,3时,返回的data数据
- data =[
- {"id":"804",
- "operator":"", //号码运营商,座机查不出
- "address":"广东省云浮市", //号码归属地,座机号码带区号就可以查出,不带区号查不出
- "count":0, //通话次数,插件内部没做查询,所以默认0
- "number":"07668937564", //电话号码
- "duration":0,//通话时长,单位秒
- "type":5, //通话记录类型,见注释5
- "date":"2022-06-25 17:05:44" //时间
- },
- ......
- ]
- //type=4时,返回的data数据(查询通话次数最多的电话号码及其次数,)
- data={
- "operator": "中国电信",
- "type": 0, //无用参数
- "address": "北京",
- "name": "姓名",
- "count": 67, //通话次数
- "number": "号码",
- "duration": 0 //无用参数
- }
- //type=5时,返回的data数据(查询通话时间最长的通话记录,)
- data= {
- "id": "363",
- "name": "姓名",
- "operator": "中国联通",
- "address": "中国",
- "count": 0, //通话次数,插件内部没做查询,所以默认0
- "number": "号码",
- "duration": 1662, //通话时长,单位秒
- "type": 1, 通话记录类型,见注释5
- "date": "2021-05-17 21:43:02" //来电时间
- }
- res={
- "code": 1,
- "message": "获取失败",
- }
- })
复制代码- addCallLogs({
- name:"", //姓名,必填
- number:"",//号码,必填
- date: , //通话日期,长整型,单位毫秒,默认值:当前系统时间,可选
- duration:60,//通话时长,长整型,单位秒,必填
- type:1,//通话记录类型,整型,见注释5,必填
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "添加成功",
- }
- res={
- "code": 1,
- "message": "添加失败:",
- }
- })
复制代码- deleteCallLogs({
- type: "", //见注释6,必填
- param: "", //见注释6,必填
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "删除成功",
- }
- res={
- "code": 1,
- "message": "删除失败",
- }
- })
读取和发送短信的权限无需单独请求,接口调用时会自动申请
这个接口比较简单,查询结果也不全,一些不带区号的座机号码,或者虚拟号码发送的短信是查询不到的
复制代码- getSMSLogs({
- type: 0, //默认值0:查询全部的短信记录,可选,type无其他值
- param:"",//默认值"",可选
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "获取成功",
- "data":"获取的数据"
- }
- data=[
- {
- "id": "1940",
- "read": 1, //短信是否已读1:已读 0:未读
- "number": "02163232056",
- "type": 1, //短信类型,见注释7
- "body": "短信内容",
- "date": "2022-06-19 18:01:16"
- }
- ]
- res={
- "code": 1,
- "message": "获取失败",
- }
- })
复制代码- sendSMS({
- numbers:[], //收件人号码,必填,格式:["收件人号码1","收件人号码2"]
- body:"",//短信内容,必填,如果内容大于70字,会拆分为多条发送
- },res=>{
- console.log(res);
- res={
- "code": 0,
- "message": "发送成功",
- }
- res={
- "code": 1,
- "message": "发送失败:",
- }
- })
value | 说明 |
---|---|
android.permission.READ_CONTACTS | 读联系人权限 |
android.permission.WRITE_CONTACTS | 写联系人权限 |
android.permission.READ_CALL_LOG | 读通话记录权限 |
android.permission.WRITE_CALL_LOG | 写通话记录权限 |
android.permission.CALL_PHONE | 拨打电话权限 |
android.permission.READ_SMS | 读短信权限 |
android.permission.SEND_SMS | 发送短信权限 |
type | type说明 | param | param说明 |
---|---|---|---|
0 | 查询全部的联系人 | "" | 无需输入param值 |
1 | 根据id查询指定的联系人 | "id" | 输入查询到的联系人id值,严格匹配 |
2 | 根据姓名查询指定的联系人 | "姓名" | 输入联系人姓名,严格匹配 |
3 | 根据号码查询指定的联系人 | "号码" | 输入联系人号码,严格匹配 |
type | type说明 | param | param说明 |
---|---|---|---|
1 | 根据id删除指定的联系人 | "id" | 输入查询到的联系人id值,严格匹配 |
2 | 根据姓名删除指定的联系人 | "姓名" | 输入联系人姓名,严格匹配 |
3 | 根据号码删除指定的联系人 | "号码" | 输入联系人号码,严格匹配 |
type | type说明 | param | param说明 |
---|---|---|---|
0 | 查询全部的通话记录 | "" | 无需输入param值 |
1 | 根据id查询指定的通话记录 | "id" | 输入查询到的通话记录id值,严格匹配 |
2 | 根据姓名查询指定的通话记录 | "姓名" | 输入姓名,严格匹配 |
3 | 根据号码查询指定的通话记录 | "号码" | 输入号码,严格匹配 |
4 | 获取通话次数最多的电话号码及其次数 | "" | 无需输入param值 |
5 | 获取通话时间最长的通话记录 | "" | 无需输入param值 |
type | 说明 |
---|---|
1 | 来电 (呼入) |
2 | 拨出 (呼出) |
3 | 未接 |
4 | 语音邮件 |
5 | 已拒绝 (已挂断) |
type | type说明 | param | param说明 |
---|---|---|---|
1 | 通过id删除通话记录 | "id" | 输入查询到的通话记录id值,严格匹配 |
2 | 通过姓名删除通话记录 | "姓名" | 输入姓名,严格匹配 |
3 | 通过电话号码删除通话记录 | "号码" | 输入号码,严格匹配 |
type | 说明 |
---|---|
0 | 全部 |
1 | 收件箱 |
2 | 发送 |
3 | 草稿 |
4 | 发件箱 |
5 | 失败的 |
6 | 排队 |