電話監聽一般放在服務中進行
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"/>
這樣就可以監聽手機的狀態了