我是android平台的新手。请帮我解释一下广播接收器和意图过滤器在android.please中的行为如何在简单的行中解释或者事先用example.thanks ...
答案 0 :(得分:18)
广播接收器是Android项目中的一个类,它负责接收所有意图,这些意图由其他活动使用android.content.ContextWreapper.sendBroadcast(Intent intent)
在您接收活动的清单文件中,您必须声明哪个是您的广播接收器类,例如:
<receiver android:name="xyz.games.pacman.network.MessageListener">
<intent-filter>
<action android:name="xyz.games.pacman.controller.BROADCAST" />
</intent-filter>
</receiver>
如您所见,您还可以在此处定义意图过滤器,即广播接收器应接收哪些意图。
然后你必须定义一个扩展BroadcastReceiver的类。这是您在清单文件中定义的类:
public class MessageListener extends BroadcastReceiver {
/* (non-Javadoc)
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
*/
@Override
public void onReceive(Context context, Intent intent) {
...
}
此处,接收通过过滤器传递的所有意图,您可以使用方法调用中传递的参数访问它们。
答案 1 :(得分:11)
BroadcastReceiver可以通过两种方式注册:dynamic
或static
。静态只是通过intent-filter
中的AndroidManifest.xml
声明操作来注册新的BroadcastReceiver类。 Dynamic正在从另一个类中注册接收器。 intent-filter
确定应接收哪个操作。
要创建BroadcastReceiver,您必须扩展BroadcastReceiver类并覆盖onReceive(Context,Intent)
方法。在这里,您可以使用Intent.getAction()
检查传入的意图并相应地执行代码。
作为一个新类,静态将是
public class Reciever1 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String str = intent.getAction();
if(str.equalsIgnoreCase("HELLO1")) {
Log.d("Abrar", "reciever....");
new Thread() {
public void run() {
Log.d("Abrar", "reciever....");
System.out.println("Abrar");
}
}.start();
}
或者,如果放在现有的类中,则使用
动态调用它intentFilter = new IntentFilter();
intentFilter.addAction("HELLO1");
//---register the receiver---
registerReceiver(new Reciever1(), intentFilter);
答案 2 :(得分:1)
BroadcastReceiver
:您的应用告诉Android操作系统的“网关”,您的应用有兴趣接收信息。
Intent-Filter
:与BroadcastReceiver
一起使用并告诉您有兴趣接收的“信息”。例如,您的应用想要接收有关电池电量的信息。