1

나는 안드로이드에서 초보자이며 사용자가 전화를받을 때 네트워크 상태를 모니터링하는 안드로이드 응용 프로그램을 개발 중입니다. (수신 및 발신 전화 모두) ...발신 전화의 통화 상태를 얻는 방법은 무엇입니까?

나는 착신 전화를 PhonestateListner 클래스와 onCallStateChanged 메서드를 재정의 ... 나는 onCallStateChanged 방법 내부 TelephonyManager 클래스에 정의 된 상수 (CALL_STATE_IDLE, CALL_STATE_OFFHOOK 및 CALL_STATE_RINGING)를 사용하고 있지만, 이러한 상수는 발신 통화 제대로 작동하지 않는

my question is 
  1. c를 모니터링하는 방법 나가는 전화가있을 때 모든 상태 (RINGING, OFF_HOOK, IDLE) ??
  2. 나가는 호출에 대한 통화 상태를 모니터링하는 API가 Android에 있습니까 ??? 예, 다음을 지정하십시오 ...

나를 당신의 시간을 ... 발신 통화 android.intent.action.NEW_OUTGOING_CALLandroid.intent.action.PHONE_STATE에 대한 조치와

+0

그냥이 [링크]를 따라이 작업을 수행하는 가장 좋은 방법 manifest에서 [1] [1] : http://stackoverflow.com/a/15564021/2492925 –

답변

2

브로드 캐스트 리시버를 감사이 개념을 이해하는 데 도움이 바랍니다.

android.intent.action.NEW_OUTGOING_CALL은 발신 전화가 시작될 때 브로드 캐스트됩니다. 수신 인 텐트에는 발신 번호가 포함 된 추가 문자열 변수 Intent.EXTRA_PHONE_NUMBER이 있습니다. 이 경우 허가 android.permission.PROCESS_OUTGOING_CALLS이 필요합니다.

들어오는 호출을 감지하려면 android.intent.action.PHONE_STATE 작업에 대해 BroadcastReceiver를 등록하십시오. 전화 상태가 변경되면이 메시지가 브로드 캐스팅됩니다. 수신 인 텐트에는 전화 상태를 설명하는 추가 문자열 변수 TelephonyManager.EXTRA_STATE이 있습니다. 이 상태가 TelephonyManager.EXTRA_STATE_RINGING이면 다른 추가 문자열 변수 TelephonyManager.EXTRA_INCOMING_NUMBER이 있습니다. 이 변수는 수신 전화 번호를 포함합니다. 상태가 TelephonyManager.EXTRA_STATE_RINGING이 아닌 경우이 변수는 존재하지 않습니다. 당신이 전화의 수신 상태를 위해 내부 클래스를 생성에서 onCreate

 StateListener phoneStateListener = new StateListener(); 
    TelephonyManager telephonyManager =(TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
    telephonyManager.listen(phoneStateListener,PhoneStateListener.LISTEN_CALL_STATE); 

에서 그물 작업 상태 코드를 얻을 코드의 도움 아래

2

.

class StateListener extends PhoneStateListener { 
@Override 
public void onCallStateChanged(int state, String incomingNumber) { 
    super.onCallStateChanged(state, incomingNumber); 
    switch (state) { 
     case TelephonyManager.CALL_STATE_RINGING: 
      break; 
     case TelephonyManager.CALL_STATE_OFFHOOK: 
      System.out.println("call Activity off hook"); 
      LockScreenActivity.this.finish(); 
      break; 
     case TelephonyManager.CALL_STATE_IDLE: 
      break; 
    } 
} 
}; 

설정 권한 파일

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

** ** ** http://stackoverflow.com/editing-help를 읽어주십시오. – brasofilo

관련 문제