2012-05-01 107 views
0
一个进来的短信

我在我的应用程序有一个BroadcastReceiver:阅读的Android

public class SMSReceiver extends BroadcastReceiver { 

    public void onCreate(){ 
     Log.i("APP","SMS Receiver started."); 
    } 

    @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.i("APP", "SMS received."); 
     } 
    } 

和接收器:

<receiver class="SMSReceiver" android:name=".SMSReceiver" > 
    <intent-filter> 
     <action android:name="smsreceiver" android:value="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

和:

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

我启动:

Intent SMS = new Intent(this, SMSReceiver.class); 
sendBroadcast(SMS); 

在主要活动。

我该如何阅读邮件内容?谢谢。在mainfest

+1

参考!参考!参考!。 入住这里: http://stackoverflow.com/questions/1944102/android-sms-receiver-not-working http://stackoverflow.com/questions/4117701/android- sms-broadcast-receiver – Niranjan

回答

1

这样声明:

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

无需从意向开始你的接收器,当你在清单申报,何时传入邮件到达时,自动调用。

这里是广播接收器代码:

将这个代码在你onRecieve方法

if (!intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) 
         return;   
         bundle = intent.getExtras(); 

      if (bundle != null) { 
       // ---retrieve the SMS message received--- 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       // Set<String> Bundle.keySet(); 
       msgs = new SmsMessage[pdus.length]; 
       // DeleteSMSFromInbox(context, msgs); 
       for (int i = 0; i < msgs.length; i++) { 

        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
        ClsIncomingsmsNo = msgs[i].getOriginatingAddress(); 
        System.out.println("ClsIncomingsmsNo" + ClsIncomingsmsNo); 
        msg = msgs[i].getMessageBody().toString(); 

} 

}

+0

你能否修正你的代码的缩进?还要确保支架平衡!我不确定它是最初的样子还是弄乱了,但它肯定可以使用修复,而且你最好放置它,因为它是你的代码。 – Rolf