安卓通讯录操作插件

包含获取通讯录、添加联系人、修改联系人、删除联系人、拨打电话、获取通话记录、添加通话记录、删除通话记录、获取短信记录、发送短信、获取电话号码运营商和归属地等功能。

地址:安卓通讯录操作插件 - DCloud 插件市场

 

所需权限

复制代码    <!-- 读写联系人权限 -->
    <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");

1、权限接口

1.1 权限检查

复制代码checkPermissions({
    permissionList:[], //见注释1,格式:["权限1","权限2"],必填
},res=>{
    console.log(res);
    res={
        "code":0,
        "checked":true/false,
        "message":"权限全部通过/有权限未通过",
        "unPermissionList":[],//未通过权限列表
    }
    res={
        "code":1,
        "message":"权限检查失败:",
    }
});

1.2 跳转到应用设置页面

复制代码getSettings();

2、联系人相关接口

在调用接口之前,请先获取相应的权限

2.1 获取联系人

复制代码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": "获取失败",
    }
})

2.2 添加联系人

每次调用,都会新增一条联系人记录

即使联系人姓名和电话号码都与已有记录相同,也会新增一条id不同的记录

可以通过【2.1获取联系人】接口查看详情

因为在一般的手机通讯里,姓名和号码相同时,只会显示一条记录,若姓名相同,号码不同,会显示两条记录

若想实现在同一个联系人姓名下,添加多个号码,可以配合使用【2.3修改联系人】接口

复制代码addContacts({
    name:"",  //姓名,必填
    number:"",//号码,必填
},res=>{
    console.log(res);
    res={
        "code": 0,
        "message": "添加成功",
    }
    res={
        "code": 1,
        "message": "添加失败:",
    }
})

2.3 修改联系人

复制代码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": "没有查询到联系人数据",
    }
})

2.4 删除联系人

复制代码deleteContacts({
    type: 1, //见注释3,必填
    param: "", //见注释3,必填
},res=>{
    console.log(res);
    res={
        "code": 0,
        "message": "删除成功",
    }
    res={
        "code": 1,
        "message": "删除失败",
    }
    res={
        "code": 2,
        "message": "没有查询到联系人数据",
    }
})

2.5 拨打电话

复制代码callUp("电话号码")

2.6 获取电话号码运营商和归属地

复制代码getPhoneNumberInfo("电话号码",res=>{
    console.log(res);
    res={
        "data": {
            "operator": "中国移动",    //运营商
            "address": "北京"         //归属地
        }
   }
})

3、通话记录相关接口

在调用接口之前,请先获取相应的权限

3.1 获取通话记录

复制代码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": "获取失败",
    }
})

3.2 新增通话记录

复制代码addCallLogs({
    name:"",  //姓名,必填
    number:"",//号码,必填
    date: , //通话日期,长整型,单位毫秒,默认值:当前系统时间,可选
    duration:60,//通话时长,长整型,单位秒,必填
    type:1,//通话记录类型,整型,见注释5,必填
},res=>{
    console.log(res);
    res={
        "code": 0,
        "message": "添加成功",
    }
    res={
        "code": 1,
        "message": "添加失败:",
    }
})

3.3 删除通话记录

复制代码deleteCallLogs({
    type: "", //见注释6,必填
    param: "", //见注释6,必填
},res=>{
    console.log(res);
    res={
        "code": 0,
        "message": "删除成功",
    }
    res={
        "code": 1,
        "message": "删除失败",
    }
})

4、短信相关接口

读取和发送短信的权限无需单独请求,接口调用时会自动申请

4.1 获取短信记录

这个接口比较简单,查询结果也不全,一些不带区号的座机号码,或者虚拟号码发送的短信是查询不到的

复制代码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": "获取失败",
    }
})

4.2 发送短信

复制代码sendSMS({
    numbers:[],  //收件人号码,必填,格式:["收件人号码1","收件人号码2"]
    body:"",//短信内容,必填,如果内容大于70字,会拆分为多条发送
},res=>{
    console.log(res);
    res={
        "code": 0,
        "message": "发送成功",
    }
    res={
        "code": 1,
        "message": "发送失败:",
    }
})

注释

1 权限列表

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发送短信权限

2 获取联系人

typetype说明paramparam说明
0查询全部的联系人""无需输入param值
1根据id查询指定的联系人"id"输入查询到的联系人id值,严格匹配
2根据姓名查询指定的联系人"姓名"输入联系人姓名,严格匹配
3根据号码查询指定的联系人"号码"输入联系人号码,严格匹配

3 删除联系人

typetype说明paramparam说明
1根据id删除指定的联系人"id"输入查询到的联系人id值,严格匹配
2根据姓名删除指定的联系人"姓名"输入联系人姓名,严格匹配
3根据号码删除指定的联系人"号码"输入联系人号码,严格匹配

4 获取通话记录

typetype说明paramparam说明
0查询全部的通话记录""无需输入param值
1根据id查询指定的通话记录"id"输入查询到的通话记录id值,严格匹配
2根据姓名查询指定的通话记录"姓名"输入姓名,严格匹配
3根据号码查询指定的通话记录"号码"输入号码,严格匹配
4获取通话次数最多的电话号码及其次数""无需输入param值
5获取通话时间最长的通话记录""无需输入param值

5 通话记录类型

type说明
1来电 (呼入)
2拨出 (呼出)
3未接
4语音邮件
5已拒绝 (已挂断)

6 删除通话记录

typetype说明paramparam说明
1通过id删除通话记录"id"输入查询到的通话记录id值,严格匹配
2通过姓名删除通话记录"姓名"输入姓名,严格匹配
3通过电话号码删除通话记录"号码"输入号码,严格匹配

7 短信类型

type说明
0全部
1收件箱
2发送
3草稿
4发件箱
5失败的
6排队
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值