起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5672|回复: 9

[分享] 实现通话记录查询,通讯录查询,拨号

  [复制链接]

40

主题

127

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
QQ
发表于 2017-4-24 16:59:36 | 显示全部楼层 |阅读模式
通讯录(Wex5自带可用)
  1. require("$UI/system/lib/cordova/cordova");
  2. require("cordova!cordova-plugin-contacts");//导入cordova

  3. //新增:
  4. var myContact = navigator.contacts.create({"displayName": "Test User"});
  5.                myContact.save(contactSuccess, contactError);
  6.                
  7.                function contactSuccess() {
  8.                   alert("Contact is saved!")
  9.                }
  10.                   
  11.                function contactError(message) {
  12.                   alert('Failed because: ' + message);
  13.                }

  14. 查询:
  15. var options = new ContactFindOptions();
  16.                options.filter = "童星强";//查询的通讯录人名字
  17.                options.multiple = false;
  18.             
  19.                fields = ["displayName"];
  20.                navigator.contacts.find(fields, contactfindSuccess, contactfindError, options);
  21.                
  22.                function contactfindSuccess(contacts) {
  23.                   for (var i = 0; i < contacts.length; i++) {
  24.                      alert("Display Name = " + JSON.stringify(contacts[i]));
  25.                   }
  26.                }
  27.                   
  28.                function contactfindError(message) {
  29.                   alert('Failed because: ' + message);
  30.                }
复制代码




通话记录(需要外部导入cordova,仅支持安卓)
苹果不允许程序获取用户通话记录,所以这里只有安卓的。
  1. require("cordova!callsplugin");//导入cordova

  2.             var firstCall = 0;
  3.             var lastCall = 20000  //这里的lastcall就是指通话记录末尾号,你可以通过设置这个,从最近的通话记录开始读取指定个数。
  4.             calls.getCalls(function(res) {
  5.                     var list = JSON.parse(res);
  6.                     callList = JSON.stringify(list);
  7.                     // console.log("通话记录:"+calList);
  8.                           alert(callList);//将所有数据alert出来
  9.             }, function(error) {
  10.                           //console.log(error);
  11.             }, "", "getCallDetails", [ firstCall, lastCall ]);

  12. //能查询出拨号人,电话,拨出还是拨入,时间戳,拨号时长。
  13. //具体代码在.java文件中。
复制代码
@zhaoyuchen
基于这位用户的插件分享,我这把名称修改成中文,然后添加了通话时长的显示。




拨号(安卓苹果都支持)
这里拨号是直接拨出号码,不支持跳转到拨号界面等待点击拨号。
会安卓原生开发的可以自行修改,苹果的不支持。
但也有折中的方法:
在APP里放一个comfirm,确认拨号吗?(确认/取消);其实效果是一样的。
  1. require("cordova!CordovaCallNumberPlugin-master");//导入cordova

  2. //调用插件
  3.                      window.plugins.CallNumber.callNumber(function onSuccess(result){                console.log("Success:call number"+result);
  4. alert(result)
  5.         },
  6.         function onError(result) {                                                           console.log("Error:call number"+result);
  7.      },                                                           "137XXXXXXXX",true);//拨打指定号码
复制代码



(讲道理这分隔线真的乡土)

插件使用:
直接解压之后,把解压文件夹放入model/Native/plugins里面,在JS页面导入,就可以使用了;
1.因为apploader不支持外部扩展的插件,建议把测试页面用模式三打包成调试模式的APK。记得选需要的cordova。
2.最好核对一下cordova文件夹里plugin.xml的 plugin根目录的id,需要和cordova文件夹的文件名一样。(Wex5官方文档里也有)

欢迎补充

callsplugin.rar

14.25 KB, 下载次数: 344

通话记录查询(安卓)

CordovaCallNumberPlugin-master(1).zip

5.62 KB, 下载次数: 311

拨号

354

主题

945

帖子

2404

积分

金牌会员

Rank: 6Rank: 6

积分
2404
QQ
发表于 2017-8-15 11:30:30 | 显示全部楼层
参考您的查询手机号写法,怎么提示 ContactFindOptions is not defined 错误
该怎么写呢?
回复 支持 反对

使用道具 举报

发表于 2017-8-16 10:54:16 | 显示全部楼层
yuki 发表于 2017-8-15 11:30
参考您的查询手机号写法,怎么提示 ContactFindOptions is not defined 错误
该怎么写呢? ...

http://docs.wex5.com/wex5-app-question-list-2090
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

41

主题

837

帖子

2271

积分

金牌会员

搬砖工

Rank: 6Rank: 6

积分
2271
QQ
发表于 2017-8-16 13:57:59 | 显示全部楼层
顶!
Wex5开发者,欢迎互相交流学习
交流群:30057529


我要成为代码女神
回复

使用道具 举报

40

主题

127

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
QQ
 楼主| 发表于 2017-9-5 11:37:51 | 显示全部楼层
yuki 发表于 2017-8-15 11:30
参考您的查询手机号写法,怎么提示 ContactFindOptions is not defined 错误
该怎么写呢? ...

应该是你的Cordova没有正确导入,找不到通讯录查找的对象,上面require的两句话都要加进去
回复 支持 反对

使用道具 举报

12

主题

39

帖子

133

积分

初级会员

Rank: 2

积分
133
QQ
发表于 2017-12-6 21:18:00 | 显示全部楼层
楼主你好,我用的的例子,为什么一点获取通话记录,app就关掉了?
回复 支持 反对

使用道具 举报

40

主题

127

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
QQ
 楼主| 发表于 2017-12-11 10:08:35 | 显示全部楼层
jsw2000 发表于 2017-12-6 21:18
楼主你好,我用的的例子,为什么一点获取通话记录,app就关掉了?

。。。。你这问的等于没问,你自己检查一下代码吧,例子没问题
回复 支持 反对

使用道具 举报

2

主题

8

帖子

46

积分

新手上路

Rank: 1

积分
46
QQ
发表于 2018-3-19 14:49:56 | 显示全部楼层
小明明 发表于 2017-12-11 10:08
。。。。你这问的等于没问,你自己检查一下代码吧,例子没问题

好像是高版本安卓有这个问题的,我的安卓7.1的也这样
回复 支持 反对

使用道具 举报

12

主题

37

帖子

159

积分

初级会员

Rank: 2

积分
159
QQ
发表于 2018-3-28 17:04:14 | 显示全部楼层
jsw2000 发表于 2017-12-6 21:18
楼主你好,我用的的例子,为什么一点获取通话记录,app就关掉了?

那是因为,app没有打开读取联系人的权限。我想请教一下,如何提示打开读取联系人的权限
回复 支持 反对

使用道具 举报

12

主题

37

帖子

159

积分

初级会员

Rank: 2

积分
159
QQ
发表于 2018-3-28 17:04:31 | 显示全部楼层
jsw2000 发表于 2017-12-6 21:18
楼主你好,我用的的例子,为什么一点获取通话记录,app就关掉了?

那是因为,app没有打开读取联系人的权限。我想请教一下,如何提示打开读取联系人的权限
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-6 03:36 , Processed in 0.101507 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表