电话监听一般放在服务中进行
1.服务中的代码:
public class PhoneService extends Service {
TelephonyManager mTM;
MyPhoneStateLister myPhoneStateLister;
@Override
public void onCreate() {
super.onCreate();
//电话状态的监听:
mTM = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
myPhoneStateLister = new MyPhoneStateLister();
//设置监听;
mTM.listen(myPhoneStateLister,PhoneStateListener.LISTEN_CALL_STATE);
}
private class MyPhoneStateLister extends PhoneStateListener{
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state){
//空闲,没有任何活动
case TelephonyManager.CALL_STATE_IDLE:
if (mWM!=null&&mViewToast!=null){
mWM.removeView(mViewToast);
}
//
Log.e("at22","空闲,没有任何活动");
break;
//电话进行中
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.e("at22","电话进行中");
//showToast(incomingNumber);
break;
//来电响铃
case TelephonyManager.CALL_STATE_RINGING:
//Toast.makeText(getApplicationContext(),"来电响铃",Toast.LENGTH_LONG).show();
Log.e("at22","来电响铃");
break;
}
super.onCallStateChanged(state, incomingNumber);
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (myPhoneStateLister!=null&&mTM!=null){
mTM.listen(myPhoneStateLister,PhoneStateListener.LISTEN_NONE);
}
}
清单文件中注册:
<service android:name=".PhoneService"/>
添加读取手机状态的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
这样就可以监听手机的状态了