更新记录

1.0.0(2022-09-02)

安卓联系人操作插件第一版,安卓通讯录操作插件中仅通讯录(即联系人增删改查等)功能


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


所需权限

    <!-- 读写联系人权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <!-- 打电话 -->
    <uses-permission android:name="android.permission.CALL_PHONE" />

    用到的权限需要在manifest.json的APP权限配置里勾选
    例如,不需要调用拨打电话的接口,就不需要勾选【打电话】的权限

引入插件

const lunaAddressBook = uni.requireNativePlugin("Luna-AddressBook");

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": "北京"         //归属地
        }
   }
})

注释

1 权限列表

value 说明
android.permission.READ_CONTACTS 读联系人权限
android.permission.WRITE_CONTACTS 写联系人权限
android.permission.CALL_PHONE 拨打电话权限

2 获取联系人

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

3 删除联系人

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

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<!-- 读写联系人权限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <!-- 打电话 --> <uses-permission android:name="android.permission.CALL_PHONE" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问