2014-04-01 2 views
1

나가는 전화에 응답 한 경우에만 타이머를 시작하고 싶습니다. Nexus 5의 기본 전화 앱과 같습니다.전화가 android에서 응답되었는지 찾는 방법

통화에 응답했는지를 파악할 수있는 방법이 있습니까?

전화 번호를 다이얼 한 직후 전화 수신기를 시도한 결과 CALL_STATE_OFFHOOK에 도착했습니다. 그래서 이것이 올바른 접근법이 아닙니까?

누군가 나를 알아낼 수 있습니까?

감사합니다.

+0

[발신 통화가 응답 한 경우 감지]의 중복 가능성 (http://stackoverflow.com/questions/2250455/detect-if-an-outgoing- 통화 응답되었습니다) – Sree

답변

0

수도 하나 명 당신을 도울 :

public class CallLogReceiver extends BroadcastReceiver { 

static boolean missedCall, incomingCall; 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 


    if (intent.getAction().equals("android.intent.action.PHONE_STATE")) { 
     String state = intent.getExtras().getString(
       TelephonyManager.EXTRA_STATE); 

     if ((state != null) 
       && (state.equals(TelephonyManager.EXTRA_STATE_RINGING))) { 
      CallLogReceiver.phoneNo = intent.getExtras().getString(
        "incoming_number"); 
      CallLogReceiver.missedCall = true; 
     } 

     if ((state != null) 
       && (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))) { 
      CallLogReceiver.incomingCall = true; 

     } 
     if (state != null 
       && !(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) 
       && !(state.equals(TelephonyManager.EXTRA_STATE_RINGING))) { 

      if (CallLogReceiver.missedCall && CallLogReceiver.incomingCall) { 
       //incoming call logic 
      } 

      else if (CallLogReceiver.missedCall 
        && !CallLogReceiver.incomingCall) { 
       // missed call logic 
      } 
      CallLogReceiver.missedCall = CallLogReceiver.incomingCall = false; 
     } 
     } 
    } 
} 
+0

나는 여전히 같은 문제가 있습니다 - 나는 다이얼을 누르면 즉시 state_OFFHOOK로갑니다. – TheDevMan

+0

아니요 코드에 문제가 있습니다. 전화 번호를 다이얼하면 상태가 EXTRA_STATE_RINGING이되고 픽업하면 상태가 EXTRA_STATE_OFFHOOK ... 디버그를 시도합니다. –

관련 문제