短信拦截广播

本文介绍了一个简单的短信拦截器实现方案,通过BroadcastReceiver监听短信接收事件并检查黑名单中的号码,实现短信拦截功能。文章展示了如何使用Android系统提供的API来读取短信内容及发送者信息,并提供了黑名单设置的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值