1.写一个类继承BrocastReceiver
class SmsMessageReceiver extends BroadcastReceiver
2.在代码中注册或在清单文件中注册短信广播
//在代码中注册广播
mReceiver = new SmsMessageReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(1000);
filter.addAction("android.provider.Telephony.SMS_RECEIVER");
registerReceiver(mReceiver, filter);
//在清单文件中注册广播
<receiver android:name=".Service.HarassInterceptService$SmsMessageReceiver"/>
3,在OnReceiver()方法中解析短信
@Override
public void onReceive(Context context, Intent intent) {
Object[] object = (Object[]) intent.getSerializableExtra("pdus");
for (int i = 0; i < object.length; i++) {
byte[] pdu = (byte[]) object[i];
SmsMessage sms = SmsMessage.createFromPdu(pdu);
String adress = sms.getOriginatingAddress(); //获取到发送短信的电话号码
BlackListCRDU crdu = new BlackListCRDU(context);
String type = crdu.queryByNumber(adress);
if (type.equals("短信") && type.equals("电话+短信")){ //如果拦截类型是短信或是全部时,就不让接受短信
abortBroadcast();
}
}
}