通过Android中的我的应用程序接收短信

时间:2012-03-09 09:38:06

标签: java android sms

我正在开发一个Android应用程序,让人们通过我的应用程序发送和接收短信到一个唯一的号码。我可以发送短信,但它出现在INBOX消息框中!

我希望它出现在我的应用程序中

我用谷歌搜索并找到了这个,但我不希望它出现在Toast消息中,我想要它在Android的什么应用程序中以及如何从这个号码保存所有短信?

这是代码:

package net.learn2develop.SMSMessaging;

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

public class SmsReceiver extends BroadcastReceiver
{
 @Override
    public void onReceive(Context context, Intent intent) 
   {
    //---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();                     
            str += " :";
            str += msgs[i].getMessageBody().toString();
            str += "\n";        
        }
        //---display the new SMS message---
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
    }                         
 } 
 }  

2 个答案:

答案 0 :(得分:0)

根据:Can we delete an SMS in Android before it reaches the inbox?

  

传入的短信广播   (android.provider.Telephony.SMS_RECEIVED)作为一个提供   “ordered broadcast” - 意思是你可以告诉系统哪个   组件应首先接收广播。

     

如果您在短信收听时定义了android:priority属性   ,然后你会收到通知   本地短信应用程序。

     

此时,您可以cancel广播,阻止广播   被传播到其他应用程序。

答案 1 :(得分:0)

在你的清单中,你应该有这样的东西:

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

注意 android:priority =&#34; 999&#34;

onReceive()方法中,第一行应为abortBroadcast();。时间确实很重要,你将从意图中获得捆绑。