我是纸飞机
我是纸飞机
  • 发布:2022-06-27 10:34
  • 更新:2023-12-12 15:26
  • 阅读:1960

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

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

  • 我是纸飞机 (作者)

    好的,解决了谢谢您

    2022-06-28 15:29

  • 十二112

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

    2022-06-28 15:58

FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架: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

  • 我是纸飞机 (作者)

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

    2022-07-26 16:56

  • 6***@qq.com

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

    2022-07-26 17:04

  • 阿怪1874

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

    2022-08-11 10:18

阿怪1874

阿怪1874

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

阿怪1874

阿怪1874

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

  • 我是纸飞机 (作者)

    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

  • 我是纸飞机 (作者)

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

    2022-08-11 16:18

test11

test11

页面onLoad添加上述代码

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

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

  • 我是纸飞机 (作者)

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

    2022-09-21 10:17

Planets

Planets

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

  • Planets

    这里就不执行了,

    2022-09-23 11:24

  • Planets

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

    2022-09-23 12:03

  • 4***@qq.com

    回复 Planets: 我的情况和你的一样 空白通行证打开以后 还是依然无法执行上述语句

    2023-02-22 11:57

Planets

Planets

怎么监听电话接听了呢?

  • 我是纸飞机 (作者)

    是否接通电话,我也还没有找到方法,我就看了一下是否有通讯录文件,如果有通讯录文件就是接通了,我们这边一般会要求进行通话录音的

    2022-10-08 15:01

OrangBus

OrangBus - 保持勇敢,坚持有趣,生命不息,折腾不止。

4***@qq.com

4***@qq.com

老师你好,我这边参考你的案例:
let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function (Contexttest, intent) {
plus.android.importClass(intent);
let phoneStatus = telManager.getCallState();

        that.callStatus = phoneStatus; //电话状态 0->空闲状态 1->振铃状态 2->通话存在  
        switch (phoneStatus) {  
            case 0:  
                console.log("3、电话挂断,上传录音")  
                // 结束录音  
                recorderManager.stop();  
                break;  
            case 1:  
                // console.log('1、振铃状态');  
                break;  
            case 2:  
                console.log('2、通话存在')  
                // 延迟录音  
                that.start_time = Math.round(new Date().getTime() / 1000);  
                recorderManager.start({  
                    duration: EnumData.audioDuration, // 时长 10分钟  
                    sampleRate: EnumData.audioSampleRate, // 码率  
                });  
                break;  
        }  
    }  
});  

以上语句一直无法接收到电话状态

2***@qq.com

2***@qq.com

HBuilder X 运行到手机 监听的来电号码 怎么一直是null

要回复问题请先登录注册