• 安卓通讯录操作插件


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

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

     ​​​​​​​

     

    所需权限

    复制代码
    1. <!-- 读写联系人权限 -->
    2. <uses-permission android:name="android.permission.READ_CONTACTS"/>
    3. <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    4. <!--读写手机通话记录权限-->
    5. <uses-permission android:name="android.permission.READ_CALL_LOG" />
    6. <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
    7. <!-- 打电话 -->
    8. <uses-permission android:name="android.permission.CALL_PHONE" />
    9. <!--读写短信信息的权限-->
    10. <uses-permission android:name="android.permission.READ_SMS" />
    11. <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    12. <uses-permission android:name="android.permission.SEND_SMS" />

    引入插件

    复制代码const lunaContact = uni.requireNativePlugin("Luna-Contact");
    

    1、权限接口

    1.1 权限检查

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

    1.2 跳转到应用设置页面

    复制代码getSettings();
    

    2、联系人相关接口

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

    2.1 获取联系人

    复制代码
    1. getContacts({
    2. type: 0, //见注释2,默认值0:查询全部的联系人,可选
    3. param:"",//见注释2,默认值"",可选
    4. },res=>{
    5. console.log(res);
    6. res={
    7. "code": 0,
    8. "message": "获取成功",
    9. "data":"获取的数据"
    10. }
    11. data=[{
    12. "id": "105", //id每个手机中生成的都不相同,即使是相同联系人
    13. "name": "这是一个测试联系人",
    14. "number": "18650246538"
    15. "operator": "中国联通",
    16. "address": "福建省莆田市",
    17. },
    18. ......
    19. ]
    20. res={
    21. "code": 1,
    22. "message": "获取失败",
    23. }
    24. })

    2.2 添加联系人

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

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

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

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

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

    复制代码
    1. addContacts({
    2. name:"", //姓名,必填
    3. number:"",//号码,必填
    4. },res=>{
    5. console.log(res);
    6. res={
    7. "code": 0,
    8. "message": "添加成功",
    9. }
    10. res={
    11. "code": 1,
    12. "message": "添加失败:",
    13. }
    14. })

    2.3 修改联系人

    复制代码
    1. editContacts({
    2. id: "", // 联系人id,通过【2.1获取联系人】接口查询出,必填
    3. name: "", // 姓名,原姓名或修改后的姓名,必填
    4. addedNumbers: [], // 新增的号码,格式:["新增的号码1","新增的号码2"],可选
    5. deletedNumbers: [],// 删除的号码,格式:["删除的号码1","删除的号码2"],可选
    6. modifiedNumbers:[] // 修改的号码,格式:[{original:"原号码1",modified:"修改后的号码1"}],可选
    7. },res=>{
    8. console.log(res);
    9. res={
    10. "code": 0,
    11. "message": "修改成功"
    12. }
    13. res={
    14. "code": 1,
    15. "message": "修改失败"
    16. }
    17. res={
    18. "code": 2,
    19. "message": "没有查询到联系人数据",
    20. }
    21. })

    2.4 删除联系人

    复制代码
    1. deleteContacts({
    2. type: 1, //见注释3,必填
    3. param: "", //见注释3,必填
    4. },res=>{
    5. console.log(res);
    6. res={
    7. "code": 0,
    8. "message": "删除成功",
    9. }
    10. res={
    11. "code": 1,
    12. "message": "删除失败",
    13. }
    14. res={
    15. "code": 2,
    16. "message": "没有查询到联系人数据",
    17. }
    18. })

    2.5 拨打电话

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

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

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

    3、通话记录相关接口

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

    3.1 获取通话记录

    复制代码
    1. getCallLogs({
    2. type: 0, //见注释4,默认值0:查询全部的通话记录,可选
    3. param:"",//见注释4,默认值"",可选
    4. },res=>{
    5. console.log(res);
    6. res={
    7. "code": 0,
    8. "message": "获取成功",
    9. "data":"获取的数据"
    10. }
    11. //type=0,1,2,3时,返回的data数据
    12. data =[
    13. {"id":"804",
    14. "operator":"", //号码运营商,座机查不出
    15. "address":"广东省云浮市", //号码归属地,座机号码带区号就可以查出,不带区号查不出
    16. "count":0, //通话次数,插件内部没做查询,所以默认0
    17. "number":"07668937564", //电话号码
    18. "duration":0,//通话时长,单位秒
    19. "type":5, //通话记录类型,见注释5
    20. "date":"2022-06-25 17:05:44" //时间
    21. },
    22. ......
    23. ]
    24. //type=4时,返回的data数据(查询通话次数最多的电话号码及其次数,)
    25. data={
    26. "operator": "中国电信",
    27. "type": 0, //无用参数
    28. "address": "北京",
    29. "name": "姓名",
    30. "count": 67, //通话次数
    31. "number": "号码",
    32. "duration": 0 //无用参数
    33. }
    34. //type=5时,返回的data数据(查询通话时间最长的通话记录,)
    35. data= {
    36. "id": "363",
    37. "name": "姓名",
    38. "operator": "中国联通",
    39. "address": "中国",
    40. "count": 0, //通话次数,插件内部没做查询,所以默认0
    41. "number": "号码",
    42. "duration": 1662, //通话时长,单位秒
    43. "type": 1, 通话记录类型,见注释5
    44. "date": "2021-05-17 21:43:02" //来电时间
    45. }
    46. res={
    47. "code": 1,
    48. "message": "获取失败",
    49. }
    50. })

    3.2 新增通话记录

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

    3.3 删除通话记录

    复制代码
    1. deleteCallLogs({
    2. type: "", //见注释6,必填
    3. param: "", //见注释6,必填
    4. },res=>{
    5. console.log(res);
    6. res={
    7. "code": 0,
    8. "message": "删除成功",
    9. }
    10. res={
    11. "code": 1,
    12. "message": "删除失败",
    13. }
    14. })

    4、短信相关接口

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

    4.1 获取短信记录

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

    复制代码
    1. getSMSLogs({
    2. type: 0, //默认值0:查询全部的短信记录,可选,type无其他值
    3. param:"",//默认值"",可选
    4. },res=>{
    5. console.log(res);
    6. res={
    7. "code": 0,
    8. "message": "获取成功",
    9. "data":"获取的数据"
    10. }
    11. data=[
    12. {
    13. "id": "1940",
    14. "read": 1, //短信是否已读1:已读 0:未读
    15. "number": "02163232056",
    16. "type": 1, //短信类型,见注释7
    17. "body": "短信内容",
    18. "date": "2022-06-19 18:01:16"
    19. }
    20. ]
    21. res={
    22. "code": 1,
    23. "message": "获取失败",
    24. }
    25. })

    4.2 发送短信

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

    注释

    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排队
  • 相关阅读:
    《隐私计算简易速速上手小册》第7章:隐私计算与云计算/边缘计算(2024 最新版)
    多路波形发生器的控制
    Websocket
    树结构工具-TreeUtil使用
    Ubuntu升级vim/nvim
    Node.js中的缓存策略和缓存技巧
    大一学生HTML期末作业: 季奥林匹克运动会 8页 无js 带表单 带报告5200字
    element-ui问题合集(el-input-number加减一次就失效,el-select同时收集id与name)
    web3 dapp React项目引入 antd 对 balance 用户token信息组件进行样式改造
    企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图
  • 原文地址:https://blog.csdn.net/D_lunar/article/details/125562653