Android监控来电/通话中的状态
16lz
2021-01-23
使用场景:
现在在做一个功能是这样的,如果有未读订单要求设备就要响铃/获取未读订单是个线程每隔几秒钟就会获取一次,如果有未读订单就会通知铃声响起,可是在通话中的时间后天通知了设备响铃就会在通话中有铃声,导致叠加一起了,很混乱……为了解决这个所以……
原文链接:http://my.oschina.net/jgy/blog/169447
获取电话服务
在启动Activity时间获取电话服务:代码如下:
TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);MyPhoneStateListener myPhoneStateListener = new MyPhoneStateListener();// 手动注册对PhoneStateListener中的listen_call_state状态进行监听通話telephonyManager.listen(myPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
MyPhoneStateListener类
/** * 继承PhoneStateListener类,我们可以重新其内部的各种监听方法 * 然后通过手机状态改变时,系统自动触发这些方法来实现我们想要的功能 */public class MyPhoneStateListener extends PhoneStateListener {/** * @param state 通話狀態 * @param incomingNumber 手機號碼 */@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE:Log.e("---------", "挂掉");break;case TelephonyManager.CALL_STATE_RINGING:Log.e("---------", "有来电,号码是:" + incomingNumber);break;case TelephonyManager.CALL_STATE_OFFHOOK:Log.e("---------", "通話中");default:break;}super.onCallStateChanged(state, incomingNumber);}}
相关权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
山人郏高阳亲测Android2.3/4.2/4.3 木有问题!!
❤犒劳一杯咖啡❤
OVER!!!更多相关文章
- Android判断设备网络连接状态,并判断连接方式
- android 自定义状态栏和导航栏分析与实现
- 检测android的网络链接状态
- Android获取系统屏幕亮/灭屏状态
- ICS4.0.3 将声音设置中的震动和响铃默认为勾选
- Android VideoView状态跟踪和错误处理