package com.demo.sms;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//System.out.println("收到短信");
//取出短信内容 存储在bundle里中,怎么存,怎么取
Bundle bundle = intent.getExtras();
//数组中的每一个元素就是一条短信
Object[] objects = (Object[]) bundle.get("pdus");
//把数组中的元素转换成短信对象
for (Object object : objects) {
SmsMessage sms = SmsMessage.createFromPdu((byte[]) object);
//获取对方号码
String address= sms.getOriginatingAddress();
//获取短信内容
String body = sms.getMessageBody();
//System.out.println(address + ":" + body);
if("138888".equals(address)){
//拦截短信
abortBroadcast();
}
}
}
}
清单文件设置权限和广播接收的优先级
<receiver
android:name="com.demo.sms.SmsReceiver">
<!-- 设置优先级 范围:-1000~1000
设置广播接受者的优先级大于系统应用,先一步接受到广播,然后拦截-->
<intent-filter android:priority="1000">
<!-- 短信广播的action 一般是被隐藏的 -->
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>