安卓开发监听来电通知状态

2019-12-24  本文已影响0人  伪装的狼

1、声明权限

代码块:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />

2、onCreate代码

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

private PhoneStateListener phoneStateListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listenerPhoneState();
}

}

3、监听方法

private void listenerPhoneState(){

    phoneStateListener = new PhoneStateListener(){
        @Override
        public void onCallStateChanged(int state, String phoneNumber) {
            super.onCallStateChanged(state, phoneNumber);
            switch (state){
                case TelephonyManager.CALL_STATE_RINGING:
                    Log.d(TAG, "来电响铃!");
                    break;
                case TelephonyManager.CALL_STATE_IDLE:
                    Log.d(TAG, "电话挂断!");
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    Log.d(TAG, "正在通话中。。。。。。");
                    break;
                default:
                    break;
            }

        }
    };

    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (tm!=null){
        tm.listen(phoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);
    }
}

4、注销监听

@Override
protected void onDestroy() {
super.onDestroy();

    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    tm.listen(phoneStateListener,PhoneStateListener.LISTEN_NONE);
}
上一篇 下一篇

猜你喜欢

热点阅读