Android Intent发送广播消息实例详解
Android Intent发送广播消息
Intent的另一种用途是发送广播消息,应用程序和Android系统都可以使用Intent发送广播消息,广播消息的内容是可以与应用程序密切相关的数据信息,也可以是Android的系统信息,例如网络连接变化、电池电量变化、接收的短信或系统设置变化等。如果应用程序注册了BroadcastReceiver,则可以接受到指定的广播信息。
使用Intent发送广播消息非常简单,只须创建一个Intent,并调用sendBroadcast()函数就可把Intent携带的信息广播出去。但需要注意的是,在构造Intent时必须定义一个全局唯一的字符串,用来标识其要执行的动作,通常使用应用程序包的名称。如果要在Intent传递额外数据,可以用Intent的putExtra()方法。下面的代码构造了用于广播消息的Intent,并添加了额外的数据,然后调用sendBroadcast()发送广播消息:
String UNIQUE_STRING="edu.hrbeu.BroadcastReceiverDemo"; Intent intent=new Intent(UNIQUE_STRING); intent.putExtra("key1","value1"); intent.putExtra("key2","value2"); sendBroadcast(intent);
BroadcastReceiver用于监听广播消息,可以在AndroidManifest.xml文件或代码中注册一个BroadcastReceiver,并使用Intent过滤器指定要处理的广播消息。创建BroadcastReceiver须要继承BroadcastReceiver类,并重载onReceive()方法。示例代码如下:
public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent){ //TODO: React to the Intent received. } }
当Android系统接收到与注册BroadcastReceiver匹配的广播消息时,Android系统会自动调用这个BroadcastReceiver接收广播消息。在BroadcastReceiver接收到与之匹配的广播消息后,onReceiver()方法会被调用,但onReceive()方法必须要在5秒钟内执行完毕,否则Android系统会认为该组件失去响应,并提示用户强行关闭该组件。
下面为一个简单示例
发送广播消息关键代码
botton.setOnClickListener(new OnClickListener()){ public void onClick(View view){ Intent intent=new Intent("edu.hrbeu.BroadcastReceiverDemo"); intent.putExtra("message",entryText.getText().toString()); sendBroadcast(intent); } }};
在AndroidManifest.xml 文件中注册 BroadcastReceiver
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="edu.hrbeu.BroadcastReceiverDemo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".BroadcastReceiverDemo" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="edu.hrbeu.BroadcastReceiverDemo"/> </intent-filter> </receiver> </application> </manifest>
在AndroidManifest.xml文件中创建了一个< receiver >节点,其中声明了Intent过滤器的动作为 edu.hrbeu.BroadcastReceiverDemo,这与发送广播消息中的Intent的动作一致,表明这个BroadcastReceiver可以接受动作为edu.hrbeu.BroadcastReceiverDemo 的广播消息。
MyBroadcastReceiver.Java中创建了一个自定义的BroadcastReceiver,其核心代码如下:
public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent){ String msg=intent.getStringExtra("message"); Toast.makeText(context,msg,Toast.LENGTH_SHORT).show(); } }
代码第一行首先继承了BroadcastReceiver类,并在第3行重载了onReveive()函数。当接收到AndroidManifest.xml文件定义的广播消息后,程序将自动调用onReveive()函数进行消息处理。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
- Android启动内置APK和动态发送接收自定义广播实例详解
- Android开发之使用Intent发送广播消息(1)
- Android Intent和Bundle机制实例详解
- Android Intent机制实例详解(Activity篇)
- Android Intent机制实例详解(Activity篇)
- 通过Intent传输图片导致广播消息异常的问题根因分析(通过分析Android源码反向推理)
- Android Intent机制实例详解(Activity篇)
- Android学习指南之八:详解Intent及其应用实例
- Android组件:Intent与Activity生命周期实例详解
- Android BroadcastReceiver实例Demo(有序广播的发送)
- Android中Intent详解(二)之使用Intent广播事件及Broadcast Receiver简介
- android消息广播Intent传递数据
- Android Intent机制实例详解
- Android BroadcastReceiver实例Demo(有序广播的发送)
- Android Intent机制实例详解
- Android监听器之监听短信发送消息实例
- Android Intent机制实例详解
- Android 程式开发:(廿一)消息传递 —— 21.3 使用Intent发送短信
- Android笔记之高德地图定位(通过开启服务发送广播用handle消息机制更新位置信息)
- Android中Intent详解(二)之使用Intent广播事件及Broadcast Receiver简介