2011-12-07 5 views
3

나가는 전화 번호를 감지 할 수 없습니다. 기기에서 나가는 전화를 걸 때 항상 널 포인터 예외이 나옵니다. 나가는 전화 번호를 감지하고 싶습니다. 조언을 해주세요. 솔루션 검색을 시도했지만 제대로 작동하지 못했습니다. Nullpointer 예외는이 라인에오고있다 ->Log.i("OutgoingCallReceiver",phonenumber); 여기Android : 발신 번호를 감지 할 수 없습니다.

12-07 16:10:50.576: ERROR/AndroidRuntime(3145): Caused by: java.lang.NullPointerException: println needs a message 
12-07 16:10:50.576: ERROR/AndroidRuntime(3145):  at android.util.Log.println_native(Native Method) 
12-07 16:10:50.576: ERROR/AndroidRuntime(3145):  at android.util.Log.i(Log.java:143) 
12-07 16:10:50.576: ERROR/AndroidRuntime(3145):  at com.cwc.OutgoingCallReceiver.onReceive(OutgoingCallReceiver.java:27) 
12-07 16:10:50.576: ERROR/AndroidRuntime(3145):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810) 
12-07 16:10:50.576: ERROR/AndroidRuntime(3145):  ... 10 more 

, 나는 "안드로이드 누락 된

public class OutgoingCallReceiver extends BroadcastReceiver { 


// private static final String INTENT_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
      Bundle bundle = intent.getExtras(); 

      if(null == bundle) 
        return; 


      String phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

      Log.i("OutgoingCallReceiver",phonenumber); 
      Log.i("OutgoingCallReceiver",bundle.toString()); 

      String info = "Detect Calls sample application\nOutgoing number: " + phonenumber; 

      Toast.makeText(context, info, Toast.LENGTH_LONG).show(); 
    } 
} 

내가 해결 매니페스트 파일

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

</application> 

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

답변

1

의 항목을 다음과 같은 한 내 클래스 파일입니다 .permission.PROCESS_OUTGOING_CALLS "사용자 권한. 이제 작동합니다. 여기에 내 업데이트 된 매니페스트 파일이 있습니다. onReceive 방법에서

1

는 방송 수신기에서, 단지 그것 뿐이다
Intent.EXTRA_PHONE_NUMBER

String outgngphno = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

를 사용하여 번들에서 값을 얻을! 방송 수신기에서 매니페스트

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

에서

:

<intent-filter> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
     </intent-filter> 
관련 문제