你應該用你自己的類擴展PhoneStateListener來處理時,呼叫狀態的變化:
CallStateListener callListener= new CallStateListener();
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(callListener, PhoneStateListener.LISTEN_CALL_STATE);
然後,對於自己的類下面的代碼:
public class CallStateListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
Log.d(CallStateListener.class.getSimpleName(), "CALL_STATE_IDLE");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(CallStateListener.class.getSimpleName(), "CALL_STATE_OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d(CallStateListener.class.getSimpleName(), "CALL_STATE_RINGING");
break;
}
}
}
是否有一個狀態當用戶接聽電話時? 通話結束時的狀態? 傳出呼叫有類似的狀態嗎? 另外,是否有拒絕電話的狀態? –
對於更精確的接收器,您可能有興趣從Google博客閱讀本文檔:http://android-developers.blogspot.fr/2013/05/handling-phone-call-requests-right-way.html並閱讀文檔意圖和行動:http://developer.android.com/reference/android/content/Intent.html – gahfy