知识储备
实现手机电话状态的监听,主要依靠两个类:TelephonyManager和PhoneStateListener。TelephonyManager提供手机的基本信息,PhoneStateListener提供来电状态的监听和回调。
TelephonyManager
在监听状态的时候,我用到了TelephonyManager.CALL_STATE_IDLE:
1、TelephonyManager.CALL_STATE_IDLE:当前状态为挂断
2、TelephonyManager.CALL_STATE_OFFHOOK:当前状态为接听或拨打
3、TelephonyManager.CALL_STATE_RINGING:当前状态为响铃
PhoneStateListener
需要重写onCallStateChanged(int state, String mobile)方法,以监听电话状态并作出回调
权限
需要以下几个权限来实现功能:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.modify_phone_state" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
解析
首先,需要写一个类来管理整个监听机制和回调,CallingStateListener,继承PhoneStateListener,在应用程序的活动中完成启动监听和结束监听的操作。
public class CallingStateListener extends PhoneStateListener {
private boolean isListening = false;