2012-11-26 63 views
0

應用程序正在2.3.3中開發。 我正在測試仿真器中的應用程序。帶SmsMessage的BroadcastReceiver

任務:::每當有新消息到達時,我都必須在Toast中顯示消息的發件人和文本。

問題:::吐司不會顯示。

我的代碼文件:::

package com.callee.helper; 


import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 


public class CalleeHelperActivity extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent receivedIntent) { 
     // TODO Auto-generated method stub 


     Bundle b = receivedIntent.getExtras(); 
     SmsMessage[] msgs = null; 
     String str =""; 

     if(b!=null) 
     { 
      Object[] pdus = (Object[])b.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(); 
       str += " : "; 
       str += msgs[i].getMessageBody().toString(); 
       str += "\n"; 
      } 

      Toast.makeText(arg0, str, 50).show(); 

     } 
     else{ 
     Toast.makeText(arg0, "There is a problem", 50).show(); 
     } 
    } 
} 

我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.callee.helper" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 
    <uses-permission android:name="android.permission.READ_SMS"/> 
    <uses-permission android:name="android.permission.SEND_SMS"/> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 

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

    </application> 

</manifest> 

我找不到問題的所在。有人可以幫我...

我試圖在onReceive()中設置一個斷點,但它沒有命中。可能是什麼問題呢?

+0

你能確保接收消息時被調用你的'onReceive'方法?你有沒有試過設置一個斷點? – dumbfingers

+0

我已經設定了一箇中斷點。但它沒有達到突破點......可能是什麼原因? –

+0

50不是一個合適的值。閱讀文檔。 – njzk2

回答

0

您需要RECEIVE_SMS權限才能監視傳入消息。所以,加

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

你的清單,你應該是好去;)

+0

非常感謝! –