2010-07-06 55 views
6

我是新到Android platform.please幫我廣播接收器和意圖過濾器如何android.please表現在簡單的線條或提前example.thanks解釋...Android的廣播接收機和意圖過濾

+3

可能是一個好主意,看看這裏:http://stackoverflow.com/users/366916/bharathi並接受你最近的問題的答案。 – 2010-07-06 05:45:07

回答

17

廣播接收機是您的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> 

如您所見,您還可以在此處定義意圖過濾器,即broadcas接收器應接收哪些意圖。

然後你必須定義一個擴展BroadcastReceiver的類。這是你在manifest文件中定義的類:

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) { 
... 
} 

在這裏,這是通過過濾器所有的意圖都收到,你可以使用方法調用傳遞的參數訪問它們。

+0

xyz.games.pacman.controller.BROADCAST是指什麼?目前尚不清楚... – 2012-03-18 17:20:45

+0

這只是他用作示例的軟件包 – Bilthon 2012-04-14 01:20:31

8

BroadcastReceiver可以通過兩種方式註冊:dynamicstatic。 Static只不過是通過AndroidManifest.xml中的intent-filter來聲明該行爲來註冊新的BroadcastReceiver類。動態是從另一個班級中註冊接收者。 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);  
+0

如何在兩臺設備之間執行此操作,例如將一些數據從一臺設備發送到另一臺設備?我應該定義什麼? – JPerk 2017-05-15 22:23:23

+0

@JPerk你需要處理連接,但是你可以定義一個自定義的意圖來接收數據。有一個很好的機會,你不會使用現有的系統意圖來接收自定義數據,或者不想處理它通常包含的默認數據。 – LoungeKatt 2017-06-14 14:02:00

0

BroadcastReceiver叫:「門戶」與您的應用程序告訴到Android操作系統,您的應用程序有興趣接收信息。

Intent-Filter:與BroadcastReceiver一起使用,並告訴您有興趣接收哪些信息。例如,您的應用想要接收有關電池電量的信息。