短信拦截广播

来源:互联网 发布:淘宝网天天特价童装 编辑:程序博客网 时间:2024/04/29 03:43

1、

public class SMSRecevier extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        //取出黑名单        SharedPreferences sharedPreferences = context.getSharedPreferences("black", context.MODE_PRIVATE);        String phone = sharedPreferences.getString("phone", "0");        //读出短信的附加信息        if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {//            Telephony.Sms.Intents.getMessagesFromIntent(intent);            Bundle bundle = intent.getExtras();            if (bundle != null) {                Object[] pdus = (Object[]) bundle.get("pdus");                //根据数据中每一条生成一条短信                SmsMessage[] messages = new SmsMessage[pdus.length];                //生成sms                for (int i = 0; i < pdus.length; i++) {                    messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);                }                //针对每一条短信进行处理                for (SmsMessage smsMessage : messages) {                    //发送人的号码                    String senderNumber = smsMessage.getOriginatingAddress();                    //检测此人是否在黑名单中                    if (phone.equals("0") && null != senderNumber                            && senderNumber.endsWith(phone)) {                        //拦截                        String messageBody=smsMessage.getMessageBody();                        Toast.makeText(context,messageBody,Toast.LENGTH_LONG).show();                        //转发短信//                        SmsManager smsManager=SmsManager.getDefault();//                        smsManager.sendTextMessage();//发送短信                        //广播到此为止                        abortBroadcast();                    }                }            }        }    }}



2、Activity

//设置黑名单String phoneNumber=blackEdit.getText().toString();//保存黑名单SharedPreferences sp=getSharedPreferences("black",MODE_PRIVATE);SharedPreferences.Editor editor=sp.edit();editor.putString("phone",phoneNumber);editor.commit();



3、清单文件

<uses-permission android:name="android.permission.read_sms"/><uses-permission android:name="android.permission.receive_sms"/><receiver android:name=".com.example.lenovo.myapp.recevier.SMSRecevier"    android:priority="1000">    <intent-filter>        <action android:name="android.provider.Telephony.SMS_RECEIVED" />    </intent-filter></receiver>







0 0
原创粉丝点击