Android之垃圾短信拦截功能实现


Android之简单的短信拦截器

当我们需要把一些骚扰信息屏蔽掉时,这时,我们要设置一个短信拦截器:短信拦截器是通过,当我们在系统收到短信前,对短信进行拦截,当系统要收短信时这是会收到一个广播,所以,我们只需对此广播进行拦截。

如何拦截此广播呢?

由于系统上的广播接收者优先级一般是0,所以,我们只需要设置优先级大于0就可以在系统收到短信前对短信进行过滤。

具体代码如下:

在清单文件中加入收短信的权限:<uses-permission android:name="android.permission.RECEIVE_SMS" />
//这里我们只屏蔽12345这个手机号发送过来的短信
public class SmsBlacklist extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Object[] pdus = (Object[]) intent.getExtras().get("pdus");// 获取到短信数据Object[], 其中每个都是一段短信
for (Object pdu : pdus) {
SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdu);// 每一段短信是一个字节数组, 构建成一个SmsMessage对象
Date date = new Date(sms.getTimestampMillis());// 获取发送时间
String address = sms.getOriginatingAddress();// 获取号码
String body = sms.getMessageBody();// 获取消息内容
System.out.println(date + " " + address + " " + body);

if (address.equals("12345"))
abortBroadcast();// 中断传输
}
}

}

相关内容