更新记录
1.0.0(2022-06-28)
安卓通讯录操作插件第一版
平台兼容性
Android |
Android CPU类型 |
iOS |
适用版本区间:5.0 - 11.0 |
armeabi-v7a:支持,arm64-v8a:支持,x86:支持 |
× |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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.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 获取联系人
type |
type说明 |
param |
param说明 |
0 |
查询全部的联系人 |
"" |
无需输入param值 |
1 |
根据id查询指定的联系人 |
"id" |
输入查询到的联系人id值,严格匹配 |
2 |
根据姓名查询指定的联系人 |
"姓名" |
输入联系人姓名,严格匹配 |
3 |
根据号码查询指定的联系人 |
"号码" |
输入联系人号码,严格匹配 |
3 删除联系人
type |
type说明 |
param |
param说明 |
1 |
根据id删除指定的联系人 |
"id" |
输入查询到的联系人id值,严格匹配 |
2 |
根据姓名删除指定的联系人 |
"姓名" |
输入联系人姓名,严格匹配 |
3 |
根据号码删除指定的联系人 |
"号码" |
输入联系人号码,严格匹配 |
4 获取通话记录
type |
type说明 |
param |
param说明 |
0 |
查询全部的通话记录 |
"" |
无需输入param值 |
1 |
根据id查询指定的通话记录 |
"id" |
输入查询到的通话记录id值,严格匹配 |
2 |
根据姓名查询指定的通话记录 |
"姓名" |
输入姓名,严格匹配 |
3 |
根据号码查询指定的通话记录 |
"号码" |
输入号码,严格匹配 |
4 |
获取通话次数最多的电话号码及其次数 |
"" |
无需输入param值 |
5 |
获取通话时间最长的通话记录 |
"" |
无需输入param值 |
5 通话记录类型
type |
说明 |
1 |
来电 (呼入) |
2 |
拨出 (呼出) |
3 |
未接 |
4 |
语音邮件 |
5 |
已拒绝 (已挂断) |
6 删除通话记录
type |
type说明 |
param |
param说明 |
1 |
通过id删除通话记录 |
"id" |
输入查询到的通话记录id值,严格匹配 |
2 |
通过姓名删除通话记录 |
"姓名" |
输入姓名,严格匹配 |
3 |
通过电话号码删除通话记录 |
"号码" |
输入号码,严格匹配 |
7 短信类型
type |
说明 |
0 |
全部 |
1 |
收件箱 |
2 |
发送 |
3 |
草稿 |
4 |
发件箱 |
5 |
失败的 |
6 |
排队 |