4

我嘗試編寫一個android程序。我想用我的程序撥打電話,然後識別通話狀態。隨着流動功能,我可以承認掛出的狀態和接聽狀態不幹活試試這個功能,但它不能正常工作或如何檢測撥出電話中的應答或拒絕狀態

private class PhoneCallListener extends PhoneStateListener { 

    private boolean isPhoneCalling = false; 

    String LOG_TAG = "LOGGING 123"; 

    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 

     if (TelephonyManager.CALL_STATE_RINGING == state) { 
      // phone ringing 
      Log.i(LOG_TAG, "RINGING, number: " + incomingNumber); 
     } 

     if (TelephonyManager.CALL_STATE_OFFHOOK == state) { 
      // active 
      Log.i(LOG_TAG, "OFFHOOK"); 

      isPhoneCalling = true; 
     } 

     if (TelephonyManager.CALL_STATE_IDLE == state) { 
      // run when class initial and phone call ended, need detect flag 
      // from CALL_STATE_OFFHOOK 
      Log.i(LOG_TAG, "IDLE"); 

      if (isPhoneCalling) { 

       Log.i(LOG_TAG, "restart app"); 

       // restart app 
       Intent i = getBaseContext().getPackageManager() 
         .getLaunchIntentForPackage(
           getBaseContext().getPackageName()); 
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i); 

       isPhoneCalling = false; 
      } 

     } 
    } 
} 
+1

歡迎來到SO。請查看[常見問題]和[關於]頁面,瞭解如何更好地提出問題。在這種情況下,你需要具體說明「不工作」 - 錯誤消息/什麼/不會發生等等。 – 2013-02-14 16:58:42

回答

-2

你不能做到這一點與CALL_STATE_IDLE和CALL_STATE_OFFHOOK。 您必須以編程方式檢測外出鈴聲的結束...

+2

非常感謝。我怎樣才能做到這一點? – 2013-02-15 07:20:52