2012-07-07 1 views
0

내 전화가 전화를 걸 때 알려줄 수있는 좋은 수업/API를 찾을 수없는 것 같습니다. TelephonyManager를 사용하여 전화가 수신되는 것을 감지 할 수 있지만 사용자가 누군가에게 전화를 걸면 어떻게 감지합니까? 다음은 발신 전화를 확인하기 위해 사용하는 API/클래스는 무엇입니까? - Android

내가 현재 가지고있는 코드 :

public class hiWorld extends Activity { 

private int counter=0; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 



    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 




if(tm.getCallState()==1) //ringing 
{ 

    setContentView(R.layout.activity_hi_world); 
    TextView tcounter = (TextView)findViewById(R.id.textbox1); 

    tcounter.setText("calling"); 

} 

else if (tm.getCallState()==0) //idle 

{ 
    setContentView(R.layout.activity_hi_world); 
    TextView tcounter = (TextView)findViewById(R.id.textbox1); 

    tcounter.setText("not calling"); 
} 

답변

1

당신은 응용 프로그램에서 발신 전화의 방송 수신을위한 android.intent.action.NEW_OUTGOING_CALL 수신기를 등록해야합니다 :


의 AndroidManifest.xml

<receiver android:name=".OutgoingCallReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" > 
      </action> 
     </intent-filter> 
    </receiver> 


OutgoingCallRecei ver.java :

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 

+0

이 좋아,하지만 나는 상황과 의도 변수에 넣어 않습니다

public class OutgoingCallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final String originalNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); //START YOUR SERVICE HERE FOR COUNTING MINS Intent intent = new Intent(context, MyService.class); intent.putExtra("number", originalNumber); context.startService(intent); } } 


권한은 필수? – fouadalnoor

+0

@ user1508897 : 원하는 것을 분명히 할 수 있습니까? 예. 브로드 캐스트 수신자에 컨텍스트 및 인텐트 변수를 넣거나 프로젝트 필요에 따라 다른 작업을 수행하기 위해 브로드 캐스트 수신기에서 서비스 또는 활동을 시작할 수도 있습니다. –

+0

음, 내가하고 싶은 것은 단순히 사용자가 전화를 걸 었는지 확인하고 전화가 몇 분 동안 지속되는지 계산하는 것입니다. 나는 자바와 안드로이드에서 정말 새롭기 때문에 noob 질문에 곰곰이 생각해보십시오. – fouadalnoor