2013-11-27 33 views
0

手機狀態:基於這三個國家如何處理的Android

TelephonyManager.CALL_STATE_IDLE 
TelephonyManager.CALL_STATE_OFFHOOK 
TelephonyManager.CALL_STATE_RINGING: 

是否可以告訴我們,如果有來電我們呼出?

具體來說,如果有來電,

  • 有當用戶接聽電話的狀態呢?
  • 通話結束時的狀態?
  • 傳出呼叫有類似的狀態嗎?
  • 此外,有沒有拒絕電話的狀態?

回答

1

你應該用你自己的類擴展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; 
     } 
    } 

} 
+0

是否有一個狀態當用戶接聽電話時? 通話結束時的狀態? 傳出呼叫有類似的狀態嗎? 另外,是否有拒絕電話的狀態? –

+0

對於更精確的接收器,您可能有興趣從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