限制短信进入收件箱

时间:2011-10-11 09:04:03

标签: android sms broadcastreceiver

我需要限制短信不要保存在收件箱中。它应该保存在一些用户给定的文件夹中。对于即时通讯使用波纹管代码。我可以限制短信通知。通过在我的接收器中使用this.abortBroadCast()..但是短信在收件箱中显示。 我需要限制它进入INBOX。它应该显示在其他文件夹中。

public class SmsReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //this stops notifications to others   
        this.abortBroadcast(); 

        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String str = "";            
        boolean checksomething =true ;
        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";        
            }

        }                      

        if(checksomething){  
             Toast.makeText(context, "Broad Cast Cancelled", Toast.LENGTH_SHORT).show();
        }else{       
            this.clearAbortBroadcast();    
            //---display the new SMS message---
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
        } 

    }
}

2 个答案:

答案 0 :(得分:1)

在清单上必须增加Intent的优先级,如下所示:

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

答案 1 :(得分:0)

如果您想限制其他应用程序存储的消息,您必须在nadroid.manif中设置您的应用程序的“优先级”...在这里    这种情况我阻止我自己的短信转到我的短信应用程序存储。

=============================================== ======================

SMSBROAD CAST RECEIVER CLASSS中的代码。

  if(sender.equalsIgnoreCase("+923339736506"))
    {
       Toast.makeText(context, "you are not allowed ! ", Toast.LENGTH_SHORT).show();
                this.abortBroadcast();
      }

并在android.manifest中设置优先级,如下所示

       <receiver android:name=".SmsReceiver"> 

        <intent-filter android:priority="100"> 

        <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 

        </intent-filter> 

    </receiver>