Android 短信

本文介绍了一种基于Android平台的短信拦截技术实现方法,通过定义SmsReceiver类并注册特定的广播接收器来监听和处理接收到的短信。文中详细展示了如何针对不同指令短信触发特定功能,如播放报警音乐、手机定位、一键锁屏及清除数据等。

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

/**
 * 拦截短信
 * 
 * <receiver android:name=".receiver.SmsReceiver" > <intent-filter
 * android:priority="2147483647" > <action
 * android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter>
 * </receiver>
 * 
 * 需要权限:<uses-permission android:name="android.permission.RECEIVE_SMS" />
 * 
 * @author Kevin
 * 

短信接收广播

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Object[] objs = (Object[]) intent.getExtras().get("pdus");

        for (Object obj : objs) {// 超过140字节,会分多条短信发送
            SmsMessage sms = SmsMessage.createFromPdu((byte[]) obj);

            String originatingAddress = sms.getOriginatingAddress();
            String messageBody = sms.getMessageBody();

            System.out.println("号码:" + originatingAddress + ";内容:"
                    + messageBody);

            if ("#*alarm*#".equals(messageBody)) {
                // 播放报警音乐
                System.out.println("播放报警音乐");
                // asset , raw(可以通过id引入)
                // 播放媒体音乐的音量和手机铃声音量无关
                MediaPlayer player = MediaPlayer.create(context, R.raw.ylzs);
                player.setVolume(1f, 1f);// 音量最大, 基于系统音量的比值
                player.setLooping(true);// 单曲循环
                player.start();// 开始播放

                // 4.4+版本上,无法拦截短信, 调此方法没有, 比如当前应用时默认短信应用才可以
                // 操作短信数据库, 删除数据库相关短信内容, 间接达到删除短信目的
                abortBroadcast();// 中断短信传递
            } else if ("#*location*#".equals(messageBody)) {
                System.out.println("手机定位");
                // 启动位置监听的服务
                context.startService(new Intent(context, LocationService.class));

                abortBroadcast();// 中断短信传递
            } else if ("#*lockscreen*#".equals(messageBody)) {
                System.out.println("一键锁屏");
                abortBroadcast();// 中断短信传递
            } else if ("#*wipedata*#".equals(messageBody)) {
                System.out.println("清除数据");
                abortBroadcast();// 中断短信传递
            }
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值