Android SMS abort system default notify

简单的说下abortBroastcast()的作用,发送广播时有senbroadcast和sendOrderBroadcast(),后一个是带优先级的,即在receiver的<intent-filter android:priority="300">,其中数值越大,优先级越高,就会先收到广播,如果不想比他优先级低的人受到这个信息,那就在onReceiver()方法的最后加上这个abort,这样就中断了广播的继续传递

<mestfile.xml>

<receiver android:name=".SmsMessageReceiver" > 
            <intent-filter android:priority="1000">   //优先级一定要加入
                <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
            </intent-filter> 
        </receiver>   


public class SmsMessageReceiver extends BroadcastReceiver {

 private final static String TAG = "SmsMessageReceiver";
 @Override
 public void onReceive(Context context, Intent intent) {
   Log.v(TAG, ">>>>>>>onReceive start"); 
         // 第一步、获取短信的内容和发件人  

         boolean flags_filter = false;  
         StringBuilder body = new StringBuilder();// 短信内容  
         StringBuilder number = new StringBuilder();// 短信发件人  
         Bundle bundle = intent.getExtras(); 
         Log.i(TAG,"receiver action = "+ intent.getAction());
         if (bundle != null) { 
             Object[] _pdus = (Object[]) bundle.get("pdus"); 
             SmsMessage[] message = new SmsMessage[_pdus.length]; 
             for (int i = 0; i < _pdus.length; i++) { 
                 message[i] = SmsMessage.createFromPdu((byte[]) _pdus[i]); 
             } 
             for (SmsMessage currentMessage : message) { 
                 body.append(currentMessage.getDisplayMessageBody()); 
                 number.append(currentMessage.getDisplayOriginatingAddress()); 
             } 
             String smsBody = body.toString(); 
             String smsNumber = number.toString(); 
            
             Log.e(TAG, "smsBody="+smsBody+",\n smsNumber="+smsNumber);
             Toast.makeText(context, "smsBody="+smsBody+",\n smsNumber="+smsNumber, Toast.LENGTH_SHORT).show();
            
             if (smsNumber.contains("+86")) { 
                 smsNumber = smsNumber.substring(3); 
             } 
             // 第二步:确认该短信内容是否满足过滤条件   
             if (smsNumber.equals("xxxxxxxxx")) {// 屏蔽某個號碼發來的信息   
                 flags_filter = true; 
                 Log.v(TAG, "sms_number.equals(10086)"); 
             } 
             // 第三步:取消  
             if (flags_filter) { 
                 this.abortBroadcast();  //This method does not work with non-ordered broadcasts such as those sent with Context.sendBroadcast


             } 
         } 
         Log.v(TAG, ">>>>>>>onReceive end"); 


 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值