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

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