2011-08-04 96 views
0

我想捕獲傳入的短信爲我的應用程序。爲了做到這一點,我正在使用BroadcastReceiver。我在清單文件中設置了權限和過濾器。每當我收到文本時,應用程序崩潰,當我嘗試調試程序時,它甚至不會接收到接收器中的第一行代碼。有誰知道我做錯了什麼?Android短信接收器崩潰

這裏是接收器的編碼:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.telephony.SmsMessage; 

import android.os.Bundle; 

public class SMSReceiver extends BroadcastReceiver { 

    String from = null; 
    String msg = null; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
      this.abortBroadcast(); 

      //---get the SMS message passed in--- 
      Bundle bundle = intent.getExtras(); 
      SmsMessage[] msgs = null; 
      String str = "";    
      if (bundle != null) 
      { 
       //---retrieve the SMS message received--- 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       msgs = new SmsMessage[pdus.length];    
       for (int i=0; i<msgs.length; i++){ 
        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
        str += "SMS from " + msgs[i].getOriginatingAddress(); 
        from = msgs[i].getOriginatingAddress(); 
        str += " :"; 
        str += msgs[i].getMessageBody().toString(); 
        msg = msgs[i].getMessageBody().toString(); 
        str += "\n"; 
       } 
      }   
    } 
} 
+0

日誌說什麼? –

+0

你是指控制檯日誌,還是調試器中的其他東西?因爲在調試器中沒有任何可見的東西說沒有找到源以外的其他東西。 – user879378

+0

Logcat,我的意思是。您必須首先啓用logcat視圖。 –

回答

0

刪除斌&根文件形成項目&在mainfest也註冊這個接收器。

<receiver android:name="yourpackagename.Boot" > 
      <intent-filter> 

       <action android:name="android.provider.Telephony.SMS_CB_RECEIVED" > 
       </action> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" > 
       </action> 
      </intent-filter> 
     </receiver> 

我希望它爲你工作,因爲它爲我工作。