在 Android 中,广播(Broadcast) 是一种用于应用之间、应用与系统之间通信的机制。通过广播,应用可以发送一些全局通知,其他应用可以接收并响应这些通知。Android 广播机制分为两类:常规广播 和 短信广播。
广播是一种消息传递机制,类似于传统的广播电台的广播方式。它允许在 Android 系统中不同的组件(如活动、服务等)之间进行通信。广播的关键组成部分包括:
BroadcastReceiver)。Intent 进行传递。sendBroadcast(Intent) 方法发送广播。BroadcastReceiver) 监听特定的广播,通过注册接收器来接收并处理广播。Android 中的广播大体可以分为以下几种类型:
abortBroadcast())。LocalBroadcastManager 类来发送和接收,效率高、不会影响系统性能。短信广播是 Android 系统中的一个特殊广播,它用于处理短信的接收、发送等操作。短信广播通常与系统短信应用(SMS)相关联,当一个应用需要获取或处理短信相关的事件时,使用短信广播。
SMS_RECEIVED:SMS_RECEIVED 广播。应用可以监听这个广播来接收新短信。<uses-permission android:name="android.permission.RECEIVE_SMS" />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 文件中声明权限:<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" />广播接收器可以在应用中通过两种方式注册:
Context.registerReceiver() 动态注册接收器,通常这种注册方式用于需要在特定时刻才监听广播的情况。SmsReceiver receiver = new SmsReceiver(); IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); registerReceiver(receiver, filter);
AndroidManifest.xml 文件中静态注册接收器,适用于不需要在应用运行时动态启动的广播接收器。<receiver android:name=".SmsReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
通过这些广播机制,Android 提供了一种灵活的方式,让应用和系统、其他应用之间能够高效地进行通信。
https://www.52runoob.com/archives/5282
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。