广播接收器代码:
public class SmsReceiver extends BroadcastReceiver {
  private SmsMessage[] mMges;
  private static final String TAG = "SmsReceiver";
  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
      StringBuffer msgText = new StringBuffer();
      String sender =null;
      //获取Bundle
      Bundle bundle = intent.getExtras();
      if (bundle != null) {
        //获取短信内容
        Object[] pdus = (Object[]) bundle.get("pdus");
        //构建短信对象数组
        mMges = new SmsMessage[pdus.length];
        for (int i = 0; i < pdus.length; i++) {
          mMges[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
        }
        for (SmsMessage mge : mMges) {
          msgText.append("短信来自:"+mge.getDisplayOriginatingAddress()+"\n");
          msgText.append("短信内容"+mge.getDisplayMessageBody());
          //如果发送人是5555,拦截该短信
          sender = mge.getDisplayOriginatingAddress();
          Log.d(TAG, "address->"+sender);
          if ("5555".equals(sender)) {
            abortBroadcast();
            Log.d(TAG, "黑名单号码,已经拦截");
          }
        }
        Toast.makeText(context,msgText.toString(),Toast.LENGTH_LONG).show();
      }
    }
  }
}
注册广播及申请权限:
@RequiresApi(api = Build.VERSION_CODES.M)
public class MainActivity extends AppCompatActivity {
  private static final int REQUEST_CODE = 1;
  private IntentFilter mIntentFilter;
  private SmsReceiver mSmsReceiver;
  private static final String TAG = "MainActivity";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    checkPermission();
    RegisterSmsReceiver();
  }
  private void checkPermission() {
    int result_receiver = checkSelfPermission(Manifest.permission.RECEIVE_SMS);
    int result_read = checkSelfPermission(Manifest.permission.READ_SMS);
    if (result_receiver!= PackageManager.PERMISSION_GRANTED || result_read!=PackageManager.PERMISSION_GRANTED) {
      requestPermissions(new String[]{Manifest.permission.RECEIVE_SMS,Manifest.permission.READ_SMS},REQUEST_CODE);
    }
  }
  private void RegisterSmsReceiver() {
    mSmsReceiver = new SmsReceiver();
    mIntentFilter = new IntentFilter();
    mIntentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
    mIntentFilter.setPriority(9999);
    mIntentFilter.addCategory(Intent.CATEGORY_DEFAULT);
    registerReceiver(mSmsReceiver, mIntentFilter);
  }
  @Override
  protected void onDestroy() {
    if (mSmsReceiver != null) {
      unregisterReceiver(mSmsReceiver);
    }
    super.onDestroy();
  }
}
打印的日志:
2020-03-17 16:39:29.431 22422-22422/com.example.smsreceiverdemo D/SmsReceiver: address->5555
2020-03-17 16:39:29.431 22422-22422/com.example.smsreceiverdemo D/SmsReceiver: 黑名单号码,已经拦截
用的是5555号码测试的,模拟器上依然能够收到短信
您的每一个用心回答,都会让这个世界变得更美好一些!