2011-12-07 22 views
3

我無法檢測到傳出號碼是什麼,它始終給我空指針異常當我嘗試從設備發出傳出呼叫。我想檢測撥出的電話號碼。請指教,我試着尋找解決方案,但無法使其工作。空指針異常即將在這條線 - >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「用戶權限。 它現在有效,這裏是我更新的清單文件。

1

onReceive方法,在廣播接收器,使用
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>