2***@qq.com
2***@qq.com
  • 发布:2022-06-27 10:34
  • 更新:2022-09-23 12:03
  • 阅读:267

uniapp监听打电话状态无效

分类:HTML5+

uni-app 监听电话状态

let maintest = plus.android.runtimeMainActivity();  
let Contexttest = plus.android.importClass("android.content.Context");  
let telephonyManager = plus.android.importClass("android.telephony.TelephonyManager");  
let telManager=plus.android.runtimeMainActivity().getSystemService(Contexttest.TELEPHONY_SERVICE);  
let receiver=plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {  
onReceive: function(Contexttest, intent) {  
plus.android.importClass(intent);  
console.log(intent.getAction());  
// let telephonyManager = plus.android.importClass("android.telephony.TelephonyManager");  
// let telephonyManager=plus.android.runtimeMainActivity().getSystemService(Contexttest.TELEPHONY_SERVICE);  
let phonetype=telManager.getCallState();  
let phoneNumber = intent.getStringExtra(telephonyManager.EXTRA_INCOMING_NUMBER);  
console.log("phonetype:"+phonetype); //电话状态 0->空闲状态 1->振铃状态 2->通话存在  
console.log(); //电话号  
switch (phonetype) {  
case 0:  
_this.getCallLog();  
console.log('aaa')  
break;  
case 1:  
console.log('bbb')  
break;  
case 2:  
console.log('ccc')  
break;  
}  

// _t.state.push({state:phonetype == 0?'空闲状态':phonetype == 1?'振铃状态':'通话存在', time:dateFormat('hh:mm:ss')})  
}  
});  
let IntentFilter = plus.android.importClass('android.content.IntentFilter');  
let filter = new IntentFilter();  
filter.addAction(telephonyManager.ACTION_PHONE_STATE_CHANGED);  
maintest.registerReceiver(receiver, filter);

之前使用这个是可以监听拨打电话的状态的,但是6月中旬之后就监听不到了,是不是安卓系统升级的原因,有没有什么其他办法可以监听到吗?

2022-06-27 10:34 负责人:无 分享
已邀请:
十二112

十二112

一直在用,可以正常监听,看看是不是应用权限,小米的话需要修改空白通信证为允许,其他手机看权限

  • 2***@qq.com (作者)

    好的,解决了谢谢您

    2022-06-28 15:29

  • 十二112

    回复 2***@qq.com: 不客气

    2022-06-28 15:58

FullStack

FullStack - 【插件开发】【专治疑难杂症】【解决问题 >50$】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【骗子请绕道】QQ:543610866

6***@qq.com

6***@qq.com

这个还能用吗?我提示 android.permission.READ_CALL_LOG 权限被拒绝,APP权限配置里已经勾选了READ_CALL_LOG的权限,还是提示 权限被拒绝导致获取不到来电的号码

  • 6***@qq.com

    包括我手动给应用读取通话记录的权限也无济于事

    2022-07-26 16:32

  • 2***@qq.com (作者)

    回复 6***@qq.com: 现在还可以使用的,但是我的需求不是监听来电处理,就没有测试这个了,如果是监听不到打电话状态的话,小米的话是因为空白通行证的影响的

    2022-07-26 16:56

  • 6***@qq.com

    回复 2***@qq.com: 空白通行证 我也设置改了的,还是不行,还用了其他2个品牌的手机,也都不行

    2022-07-26 17:04

  • k***@163.com

    回复 6***@qq.com: 空白通行证 不行, 始终允许可以

    2022-08-11 10:18

k***@163.com

k***@163.com

小米手机权限电话权限、获取手机信息权限设置为 始终允许,才行。

k***@163.com

k***@163.com

let phoneNumber = intent.getStringExtra(telephonyManager.EXTRA_INCOMING_NUMBER);
手机号码始终都是 null ,有什么办法获取手机号码

  • 2***@qq.com (作者)

    let telephonyManager1:any =maintest.getSystemService(Contexttest.TELEPHONY_SERVICE);  
    let phonetype:any=telManager.getCallState();
    console.log("phonetype:"+phonetype); //电话状态 0->空闲状态 1->振铃状态 2->通话存在
    console.log('phoneNumber:'+ telephonyManager1.getLine1Number()); //电话号

    这个是获取主机电话的

    2022-08-11 16:13

  • 2***@qq.com (作者)

    之前我也是用那个方式,也是一直获取多是unll

    2022-08-11 16:18

test11

test11

页面onLoad添加上述代码

切换到拨号,拨打电话,收到两次数据:
第一次号码为空,第二次正常手机号;过5s左右(一直在拨号界面,app处于后台),再次拨号,就只有一次数据,号码为null。如图

请问有出现过这种情况吗,该如何处理

  • 2***@qq.com (作者)

    出现二次的情况,我出现过,我觉可能是重新监听的这个方法的问题,我这边是做了去重处理,只监听第一次,号码为null的情况也出现过,比如华为手机的有些型号,就没办法准确获取手机号码,这个我也没找到方法

    2022-09-21 10:17

Planets

Planets

为啥什么代码走到这一块不走了??

  • Planets

    这里就不执行了,

    2022-09-23 11:24

  • Planets

    解决了:小米的话需要修改空白通信证为允许

    2022-09-23 12:03

Planets

Planets

怎么监听电话接听了呢?

要回复问题请先登录注册