package com.example.fangdaoqi; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.util.Log; public class Smsreceiveandmask extends BroadcastReceiver { SharedPreferences sp; private String TAG = "smsreceiveandmask"; @Override public void onReceive(Context context, Intent intent) { Log.v(TAG, ">>>>>>>onReceive start"); sp = context.getSharedPreferences("canshu",Context.MODE_WORLD_WRITEABLE ); String anquantel = sp.getString("tel", ""); // 第一步、获取短信的内容和发件人 StringBuilder body = new StringBuilder();// 短信内容 StringBuilder number = new StringBuilder();// 短信发件人 Log.v(TAG, "number"+ number); Bundle bundle = intent.getExtras(); 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.v(TAG, "smsNumber"+ smsNumber); Log.v(TAG, "smsBody"+ smsBody); if (smsNumber.contains("+86")) { smsNumber = smsNumber.substring(3); } String tmp[] =smsBody.split(";"); for(int i=0; i<tmp.length;i++) { // System.out.println(tmp[i]);//这里调试被屏蔽的短信内容 Log.v(TAG, "tmp[i]"+ tmp[i]); } // 第二步:确认该短信内容是否满足过滤条件 boolean flags_filter = true; if (smsNumber.equals(anquantel)) {// 屏蔽该号码发来的短信 flags_filter = true; //将该机的GPS位置发送给anquantel SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(anquantel, null, "my address is ", null, null); Log.v(TAG, "sms_number.equals(5556"); } // 第三步:取消 if (flags_filter) { Log.v(TAG, "flags_filter"); this.abortBroadcast(); } } Log.v(TAG, ">>>>>>>onReceive end"); } }
需要以下权限(主要是uses-permission中的权限)
<receiver android:name=".Smsreceiveandmask"> <intent-filter android:priority="10000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <!---->