Android 11 使用 BroadcastReceiver 监听短消息
2022/5/2 23:42:49
本文主要是介绍Android 11 使用 BroadcastReceiver 监听短消息,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用装有MIUI系统的小米手机,静态注册的广播接收器监听短消息。
- 在
AndroidManifest.xml
中声明权限
<uses-permission android:name="android.permission.RECEIVE_SMS" />
- 在
AndroidManifest.xml
中声明广播接收器
<receiver android:name=".SmsReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
- 广播接收器代码:
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 从intent中获取消息 SmsMessage[] smsMessages = getMessagesFromIntent(intent); // 获取短信发送者号码 String senderNumber = smsMessages[0].getOriginatingAddress(); // 组装短信内容 StringBuilder content = new StringBuilder(); for (SmsMessage smsMessage : smsMessages) { content.append(smsMessage.getMessageBody()); } // 获取卡槽位置 Bundle bundle = intent.getExtras(); int slot = bundle.getInt("android.telephony.extra.SLOT_INDEX", -1); } }
要点:
- 先通过
getMessagesFromIntent(Intent)
获取SmsMessage
数组 - 再通过遍历
SmsMessage
数组,把每一条SmsMessage
的getMessageBody()
组装成短信内容 - 短信发送者号码可以通过首个
SmsMessage
对象的getOriginatingAddress()
方法获得 - 对于双卡手机,还可以在广播到达的
Intent
的Bundle
中, 通过Bundle.getInt("android.telephony.extra.SLOT_INDEX", -1)
, 来获取卡槽的位置。0为卡槽1,1为卡槽2。获取失败为-1。
注意:
- MIUI 等定制系统,申请权限可能不会弹窗,需要手动去设置中打开权限。
- MIUI 等定制系统,需打开应用的自启动功能,方可在短信到达时后台启动应用,运行广播接收器中相应逻辑。
- 广播接收器
onReceive
方法的超时限制有 10s,超过10s后系统会弹 ANR 弹窗。
这篇关于Android 11 使用 BroadcastReceiver 监听短消息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享