2012-10-16 18 views
2

我在Android開發框架接收到的呼出Android的檢查,當由被叫

我想觸發一個事件時傳出呼叫由被叫用戶接收,也當通話結束時(從任何)

+0

您可以使用http://developer.android.com/reference/android/telephony/PhoneStateListener.html獲取該事件... –

+0

我檢查了電話API,只有當電話是呼叫者,但在一個傳出的電話它不是任何電話狀態(空閒,摘機) –

回答

0

爲了知道主叫方是否收到了呼叫,您需要創建一個監聽器。與你的活動作爲 phoneInfo = new PhoneInfo(this); registerReceiver(phoneInfo, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL));

class PhoneInfo extends BroadcastReceiver { 
/** 
* Getting the System Telephony Service and registering a listener for Voice Call state 
*/ 
@Override 
public void onReceive(Context context, Intent intent) { 
    IncomingCallListener phoneListener = new IncomingCallListener(); 
    TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
    telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); 
} 

class IncomingCallListener extends PhoneStateListener { 

    public void onCallStateChanged(int state, String incomingNumber) { 
     Log.i(logcat,"CALL_STATE changed " + callflag); 

     switch (state) { 
     case TelephonyManager.CALL_STATE_IDLE: 
      Log.i(logcat,"CALL_STATE_IDLE"); 
            //This is where call ends. 
      break; 

     case TelephonyManager.CALL_STATE_OFFHOOK: 
            //This is where we know call is established 
      break; 

     case TelephonyManager.CALL_STATE_RINGING: 
      Log.i(logcat,"CALL_STATE_RINGING"); 
      break; 
     } 


    } 

} 

註冊這個現在使用日誌ü可以看到當撥叫或接收狀態被改變。

+0

感謝您的代碼,我可以註冊與Android清單的接收器? –

+0

是的,你可以,這會給你一個更乾淨的代碼。 –

+0

其實我只是意識到這是我正在運行的當前解決方案,但事實是每個傳出的呼叫都會創建一個新的監聽器,因此我可能在6個呼出後有6個監聽器,您怎麼看? –