package com.sharpcj.telephonestatelistenerdemo; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; public class MainActivity extends AppCompatActivity { private TelephonyManager mTelephonyManager; private static final String TAG = "sharpcj:"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); } @Override protected void onResume() { super.onResume(); mTelephonyManager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); //不要忘记了权限的添加 //<uses-permission Android:name="android.permission.READ_PHONE_STATE" /> } @Override protected void onDestroy() { super.onDestroy(); mTelephonyManager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_NONE); } class MyPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { /** * 返回电话状态 * * CALL_STATE_IDLE 无任何状态时 * CALL_STATE_OFFHOOK 接起电话时 * CALL_STATE_RINGING 电话进来时 */ switch (state) { case TelephonyManager.CALL_STATE_IDLE://无任何状态时 logi("CALL_STATE_IDLE"); break; case TelephonyManager.CALL_STATE_RINGING://电话进来时 logi("CALL_STATE_RINGING"); break; case TelephonyManager.CALL_STATE_OFFHOOK://接起电话时 logi("CALL_STATE_OFFHOOK"); break; default: super.onCallStateChanged(state, incomingNumber); break; } } } public void logi(String s) { Log.i(TAG, "joy:---" + s); } }