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


这样就可以监听手机的状态了

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