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>