HOME> 副本解析> Android广播和短信广播详解

Android广播和短信广播详解

2025-12-22 12:47:59

Android 广播和短信广播详解在 Android 中,广播(Broadcast) 是一种用于应用之间、应用与系统之间通信的机制。通过广播,应用可以发送一些全局通知,其他应用可以接收并响应这些通知。Android 广播机制分为两类:常规广播 和 短信广播。

一、Android 广播概述广播是一种消息传递机制,类似于传统的广播电台的广播方式。它允许在 Android 系统中不同的组件(如活动、服务等)之间进行通信。广播的关键组成部分包括:

发送者(Sender):发送广播的应用或组件。接收者(Receiver):接收并处理广播的应用或组件。通常是广播接收器(BroadcastReceiver)。广播消息(Intent):用于传递广播消息的对象。广播消息通过 Intent 进行传递。广播的工作流程:发送广播:应用通过 sendBroadcast(Intent) 方法发送广播。接收广播:广播接收器 (BroadcastReceiver) 监听特定的广播,通过注册接收器来接收并处理广播。二、广播类型Android 中的广播大体可以分为以下几种类型:

普通广播(Normal Broadcast):这种广播是异步的,不保证接收者接收到广播的顺序。广播发送后,系统会尽快将消息发送给所有注册的接收器。有序广播(Ordered Broadcast):这种广播是同步的,广播接收器按顺序接收广播。每个接收器可以决定是否继续传播该广播(通过 abortBroadcast())。本地广播(Local Broadcast):本地广播不会离开应用,适用于应用内部组件之间的通信。使用 LocalBroadcastManager 类来发送和接收,效率高、不会影响系统性能。三、短信广播(SMS Broadcast)短信广播是 Android 系统中的一个特殊广播,它用于处理短信的接收、发送等操作。短信广播通常与系统短信应用(SMS)相关联,当一个应用需要获取或处理短信相关的事件时,使用短信广播。

常见的短信广播:SMS_RECEIVED:当设备收到短信时,系统会发送一个 SMS_RECEIVED 广播。应用可以监听这个广播来接收新短信。接收者需要有权限:广播接收器的代码示例如下:public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); for (Object pdu : pdus) { SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu); String sender = message.getDisplayOriginatingAddress(); String body = message.getDisplayMessageBody(); // 处理短信内容 } } } }

SMS_SENT:发送短信成功后,会广播一个 SMS_SENT 消息。应用可以监听该广播来确认短信是否已成功发送。广播接收器的代码示例如下:public class SmsSentReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { switch (getResultCode()) { case Activity.RESULT_OK: // 短信发送成功 break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: // 发送失败 break; // 其他错误码 } } }

SMS_DELIVERED:发送的短信已成功送达目标设备后,系统会广播一个 SMS_DELIVERED 消息。用法类似 SMS_SENT。短信权限:在接收短信广播时,需要在 AndroidManifest.xml 文件中声明权限: 对于 Android 6.0(API 23)及以上的版本,还需要请求运行时权限。四、短信广播的注册方式广播接收器可以在应用中通过两种方式注册:

动态注册:通过 Context.registerReceiver() 动态注册接收器,通常这种注册方式用于需要在特定时刻才监听广播的情况。动态注册的广播接收器只会在应用运行时有效。SmsReceiver receiver = new SmsReceiver(); IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); registerReceiver(receiver, filter);

静态注册:在 AndroidManifest.xml 文件中静态注册接收器,适用于不需要在应用运行时动态启动的广播接收器。静态注册的广播接收器在系统启动时就会自动生效。

五、广播的注意事项权限管理:使用短信广播时,务必正确声明权限,尤其是处理接收短信、发送短信的功能。性能问题:使用广播时,如果广播传递内容过大或频繁发送广播,会影响系统性能。应尽量避免不必要的广播发送。安全性问题:需要注意广播的安全性,避免外部恶意应用通过广播滥用敏感数据。使用合适的权限来限制广播接收。广播优先级:有序广播可以设置优先级,优先级高的接收器会先接收到广播并有机会中止广播。六、总结普通广播 和 有序广播 是 Android 中最基本的广播类型。短信广播 主要用于接收和发送短信时的事件通知。在 Android 6.0 及以上版本,需要特别注意 运行时权限 的申请。应根据具体需求,合理选择 静态注册 和 动态注册 的方式来注册广播接收器。通过这些广播机制,Android 提供了一种灵活的方式,让应用和系统、其他应用之间能够高效地进行通信。

https://www.52runoob.com/archives/5282

mem是什么意思?一文详解MEM条件、专业方向、就业前景!

如何自己剪头发?5 种方法

最新发表 newmodule
友情链接 newmodule