NewsNing
NewsNing
  • 发布:2016-11-08 15:08
  • 更新:2023-07-31 10:23
  • 阅读:8896

Android监听电话呼入呼出

分类:Native.js

基本上是对着Native.js和百度的Android原生代码撸出来的。暂未测试多台机型。

            (function($) {  
                var receiver, main, context, TelephonyManager;  
                $.plusReady(function() {  
                    context = plus.android.importClass('android.content.Context'); //上下文  
                    TelephonyManager = plus.android.importClass('android.telephony.TelephonyManager'); //通话管理  
                    main = plus.android.runtimeMainActivity(); //获取activity  
                    receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {  
                        onReceive: doReceive //实现onReceiver回调函数  
                    });  
                    var IntentFilter = plus.android.importClass('android.content.IntentFilter');  
                    var Intent = plus.android.importClass('android.content.Intent');  
                    var filter = new IntentFilter();  
                    //filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); //监听飞行模式  
                    filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); //监听电话状态  
                    main.registerReceiver(receiver, filter); //注册监听  
                });  

                function doReceive(context, intent) {  
                    plus.android.importClass(intent);  

                    var phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER),  
                        telephony = context.getSystemService(context.TELEPHONY_SERVICE),  
                        state = telephony.getCallState();  
                    switch(state) {  
                        case TelephonyManager.CALL_STATE_RINGING:  
                            console.log("[Broadcast]等待接电话=" + phoneNumber);  
                            break;  
                        case TelephonyManager.CALL_STATE_IDLE:  
                            console.log("[Broadcast]电话挂断=" + phoneNumber);  
                            break;  
                        case TelephonyManager.CALL_STATE_OFFHOOK:  
                            console.log("[Broadcast]通话中=" + phoneNumber);  
                            break;  
                    }  
                    console.log(intent.getAction());  
                }  

            }(mui));
6 关注 分享
lhyh EmmenCao d***@sina.com jqr 大肥光光 h***@163.com

要回复文章请先登录注册

YSpace

YSpace

这个是仅支持html吗?我的无法监听到,是因为自定义基座的问题还是什么呢?
跟你一模一样的代码
有:READ_CALL_LOG、READ_PHONE_STATE、CALL_PHONE的权限
2023-07-31 10:22
FullStack

FullStack

电话状态监听、接听电话、挂断电话、来电自动接听、来电自动挂断、回调手机号码(ios、android):[https://ext.dcloud.net.cn/plugin?id=8756](https://ext.dcloud.net.cn/plugin?id=8756)
2022-07-11 17:14
6***@qq.com

6***@qq.com

READ_CALL_LOG权限开启了,还是没有获取到电话
2021-07-06 10:55
h***@163.com

h***@163.com

说点什么
2020-08-27 16:37
shock_sun

shock_sun

无法获取到电话号码的需要READ_CALL_LOG权限,但是有时候这个权限默认直接拒绝,可以用动态权限开启
2020-08-27 16:35
2***@qq.com

2***@qq.com

回复 Archen :
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
解决了,因为9.0后要添加新权限,这两个权限打开就可以获取
2020-07-03 17:45
2***@qq.com

2***@qq.com

回复 Archen :
9.0后获取电话号码,解决的没有
2020-07-03 17:38
2***@qq.com

2***@qq.com

获取不到电话号码
2020-07-03 17:31
Archen

Archen

Android 9后 var phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER) 这个为null 怎么才能获取到来电号码呢?
2019-11-27 21:51
lizhenq9

lizhenq9

怎么保存
2019-10-28 09:37