Android之來電狀態的監聽

電話監聽一般放在服務中進行

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"/>


這樣就可以監聽手機的狀態了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章