在你要監(jiān)聽(tīng)來(lái)電的地方就行
private void telephony() {
//獲得相應(yīng)的系統(tǒng)服務(wù)
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if(tm != null) {
try {
MyPhoneCallListener myPhoneCallListener = new MyPhoneCallListener();
myPhoneCallListener.setCallListener(new MyPhoneCallListener.CallListener() {
@Override
public void onCallRinging() {
//回調(diào),做你想做的,我是關(guān)閉當(dāng)前界面
finish();
}
});
// 注冊(cè)來(lái)電監(jiān)聽(tīng)
tm.listen(myPhoneCallListener, PhoneStateListener.LISTEN_CALL_STATE);
} catch(Exception e) {
// 異常捕捉
}
}
}
PhoneStateListener的onCallStateChanged方法監(jiān)聽(tīng)來(lái)電狀態(tài)
監(jiān)聽(tīng)電話(huà)的類(lèi) MyPhoneCallListener.java
package com.hyphenate.chatuidemo.receiver;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
/**
* Created by Mr.Robot on 2018/1/23.
* https://github.com/Siomt
*/
public class MyPhoneCallListener extends PhoneStateListener {
private static final String TAG = "MyPhoneCallListener";
protected CallListener listener;
/**
* 返回電話(huà)狀態(tài)
*
* CALL_STATE_IDLE 無(wú)任何狀態(tài)時(shí)
* CALL_STATE_OFFHOOK 接起電話(huà)時(shí)
* CALL_STATE_RINGING 電話(huà)進(jìn)來(lái)時(shí)
*/
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:// 電話(huà)掛斷
Log.d(TAG ,"電話(huà)掛斷...");
break;
case TelephonyManager.CALL_STATE_OFFHOOK: //電話(huà)通話(huà)的狀態(tài)
Log.d(TAG ,"正在通話(huà)...");
listener.onCallRinging();
break;
case TelephonyManager.CALL_STATE_RINGING: //電話(huà)響鈴的狀態(tài)
Log.d(TAG ,"電話(huà)響鈴");
break;
}
super.onCallStateChanged(state, incomingNumber);
}
//寫(xiě)個(gè)回調(diào)
public void setCallListener(CallListener callListener){
this.listener = callListener;
}
//回調(diào)接口
public interface CallListener{
void onCallRinging();
}
}