2011-12-07 14 views
3

発信番号を検出できません。常にデバイスから発信コールを発信しようとすると、nullポインタ例外が送信されます。私は発信電話番号を検出したい。アドバイス、私は解決策を探してみましたが、動作させることができませんでした。 nullポインタ例外は、この行に来ている - >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 

ここに私のクラスファイルは、私はマニフェストファイルで解決

<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

をエントリを次のようしている

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(); 
    } 
} 

ですが、私は「アンドロイドがありませんでした.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> 
関連する問題