[android] 短信的广播接收者

比较重要的一个广播事件,短信

 

界面布局,比如播放视频,默认是横屏全屏的,清单文件中进行设置,

<activity/>节点设置屏幕朝向属性,android:screenOrientation=”landscape”

设置主题android:theme=”@android:style/Theme.NoTitleBar.FullScreen”

 

设置清单文件

添加<Receiver/>节点,添加<intent-filter>节点

添加<action/>节点,设置关心的动作名称,

android:name=”android.provider.Telephony.SMS_RECEIVED

添加权限,android.permission.RECEIVE_SMS

 

新建一个SmsReceiver类继承BroadcastReceiver

onReceive(Context context,Intent intent)方法中进行处理

调用Intent对象的getExtras()方法,拿到数据,得到Bundle对象

调用Bundle对象的get(key)方法,得到byte[],参数:key这里填 “pdus”,pdu是短信的数据格式,强转成Object[]数组

循环byte[]数组 for(Object pdu:pdus)

每一个循环里面调用SmsMessage类的createFromPdu(pdu),强转Objectbyte[],此时会得到SmsMessage对象

调用SmsMessage对象的getMessageBody()方法,得到短信内容

调用SmsMessage对象的getOriginatingAddress()方法,得到发件人

调用abortBroadcast()方法,直接终止掉这条广播

 

清单文件中intent-filter节点上,可以设置优先级属性,android:priority=”1000”

广播接收者的优先级,-1000优先级最低,1000优先级最高

 

posted @   唯一客服系统开发笔记  阅读(296)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
1
chat with us