Android开发之使用Intent发送广播消息(1)
来源:互联网 发布:免费健身软件2017 编辑:程序博客网 时间:2024/05/16 19:00
应用程序和Android系统都可以使用Intent发送广播消息。其中,广播消息的内容可以是与应用程序密切相关的数据信息,也可以是Android的系统信息,例如,网络连接变化、电池电量变化、接收短信和系统设置变化等。如果应用程序注册了BroadcastReceiver,则可以接收到指定的广播消息。
下面将介绍广播信息的使用方法。
首先,创建一个Intent。调用sendBroadcast()函数,就可把Intent携带的消息广播出去,如果要在Intent传递额外数据,可以用Intent的putExtra()方法。
注意:在构造Intent时必须用全局唯一的字符串标识其要执行的动作,通常使用应用程序包的名称。
利用Intent发送广播消息,并添加了额外的数据,然后调用sendBroadcast()发送广播消息的代码如代码清单6-22所示。
代码清单6-22 利用Intent发送广播消息
String UNIQUE_STRING = "com.example.BroadcastReceiverDemo";
Intent intent = new Intent(UNIQUE_STRING);
intent.putExtra("key1", "value1");
intent.putExtra("key2", "value2");
sendBroadcast(intent);
广播消息发送后,利用BroadcastReceiver监听广播消息。具体方法如下:在AndroidManifest.xml文件或在代码中注册一个BroadcastReceiver,并在其中使用Intent 过滤器指定要处理的广播消息。在BroadcastReceiver接收到与之匹配的广播消息后,onReceive()方法会被调用;onReceive()方法必须要在5秒内执行完毕,否则Android系统会认为该组件失去响应,并提示用户强行关闭该组件。
创建BroadcastReceiver需继承BroadcastReceiver类,并重载onReceive()方法。代码如代码清单6-23所示。
代码清单6-23 利用BroadcastReceiver监听广播消息
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//TODO: React to the Intent received.
}
}
BroadcastReceiver的应用程序不需要一直运行,当Android系统接收到与之匹配的广播消息时,会自动启动此BroadcastReceiver。基于以上特征,BroadcastReceiver适合做一些资源管理的工作。
如图6-6所示,BroadcastReceiverDemo示例说明了如何在应用程序中注册BroadcastReceiver,并接收指定类型的广播消息。
图6-6 BroadcastReceiverDemo示例
如图6-6所示,在单击“发送广播消息”按钮后,EditText控件中内容将以广播消息的形式发送出去,示例内部的BroadcastReceiver将接收这个广播消息,并显示在用户界面的下方。
BroadcastReceiverDemo.java文件中包含发送广播消息的代码,其关键代码如代码清单6-24所示。
代码清单6-24 BroadcastReceiverDemo.java
button.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent = new Intent("com.example.BroadcastReceiverDemo");
intent.putExtra("message", entryText.getText().toString());
sendBroadcast(intent);
}
});
在上述代码中,第3行代码创建Intent,将com.example.BroadcastReceiverDem作为识别广播消息的字符串标识;第4行代码添加了额外信息;第5行代码调用sendBroadcast()函数发送广播消息。
为了能够使应用程序中的BroadcastReceiver接收指定的广播消息,首先要在AndroidManifest.xml文件中添加Intent过滤器,声明BroadcastReceiver可以接收的广播消息。其中,AndroidManifest.xml文件的完整代码如代码清单6-25所示。
代码清单6-25 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.BroadcastReceiverDemo"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<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="com.example.BroadcastReceiverDemo" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
在上述代码中,第14行代码中创建了一个<receiver>节点;在第15行中声明了Intent过滤器的动作为“com.example.BroadcastReceiverDemo”,这与BroadcastReceiverDemo.java文件中Intent的动作相一致,表明这个BroadcastReceiver可以接收动作为“com.example. BroadcastReceiverDemo”的广播消息。
MyBroadcastReceiver.java文件创建了一个自定义的BroadcastReceiver,其核心代码如代码清单6-26所示。
代码清单6-26 MyBroadcastReceiver.java
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();
}
}
在上述代码中,第1行代码首先继承了BroadcastReceiver类;第3行代码重载了onReceive()函数,当接收到AndroidManifest.xml文件定义的广播消息后,程序将自动调用onReceive()函数。
- Android开发之使用Intent发送广播消息(1)
- Intent发送广播消息
- Android开发之Intent、广播和接收
- Android开发之发送自定义广播
- Android开发之接收系统广播消息
- Android开发之接收系统广播消息
- Android开发之发送有序广播+拦截广播
- 【Android 开发教程】使用Intent发送短信
- android消息广播Intent传递数据
- Intent 广播 发送 接收
- NetworkComms V3 之发送UDP广播消息
- Android 系列 4.7发送/接收广播消息
- Android BroadcastReceiver(广播)实现消息发送
- C#使用UdpClient发送广播消息介绍
- Android的Service与BroadcastReceiver之四 BroadcastReceiver 简介、开发与配置;发送广播、有序广播;使用BroadcastReceiver接受系统广播
- android之broadcast发送广播
- Android开发之从网络(Intent)获取和发送数据
- Android中Intent详解(二)之使用Intent广播事件及Broadcast Receiver简介
- Power虚拟网络与OpenStack网络集成的一种设计(by quqi99)
- linux vi编辑器常用命令
- 从三个方面来讲:录制脚本,部署场景,分析结果。
- 修改.pro文件后,原错误还是存在
- CoreData 优点
- Android开发之使用Intent发送广播消息(1)
- iOS:Case.根据条件是否加载某控件
- ubuntu下截图工具:scrot 用法
- 下载Android源代码错误汇总分析
- SpringMVC源码剖析(一)- 从抽象和接口说起
- crm2011禁用子网格
- TinyOS学习-CC2420篇setPower
- Xms Xmx PermSize MaxPermSize 区别
- Robust PCA