Android广播接收器和意图过滤器

bha*_*thi 7 android intentfilter broadcastreceiver

我是android平台的新手.请帮我解释一下广播接收器和意图过滤器在android.please中的行为如何在简单的行中解释或者使用example.thanks提前解释...

Rof*_*ion 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>
Run Code Online (Sandbox Code Playgroud)

如您所见,您还在此处定义了意图过滤器,即广播接收器应接收哪些意图.

然后你必须定义一个扩展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) {
...
}
Run Code Online (Sandbox Code Playgroud)

这里,接收通过过滤器传递的所有意图,您可以使用方法调用中传递的参数访问它们.

  • xyz.games.pacman.controller.BROADCAST是指什么?不清楚... (2认同)

小智 11

BroadcastReceiver可以通过两种方式注册:dynamicstatic.静态只不过是通过intent-filterin AndroidManifest.xml来声明动作来注册新的BroadcastReceiver 类.Dynamic正在从另一个类中注册接收器.一种intent-filter确定哪些操作应被接收.

要创建BroadcastReceiver,您必须扩展BroadcastReceiver类和override 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();                          
        }
Run Code Online (Sandbox Code Playgroud)

或者,如果放在现有类中,则动态调用

intentFilter = new IntentFilter();
intentFilter.addAction("HELLO1");

//---register the receiver---
registerReceiver(new Reciever1(), intentFilter);    
Run Code Online (Sandbox Code Playgroud)