2011-05-10 68 views
7

我想用自定義數據廣播意圖,只有具有此自定義數據的接收者應該收到此意圖,該如何實現?基於自定義數據篩選意圖

這個我怎麼播的意圖:

Intent intent = new Intent(); 
intent.setAction("com.example"); 
context.sendBroadcast(intent); 

,我定義廣播接收器如下:

<receiver android:name="com.test.myReceiver" android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.example"></action> 
     </intent-filter> 
    </receiver> 

回答

0

如果你已經確定你的廣播接收器類,那麼下一步就是註冊它在您想要接收廣播意圖的活動/服務上。一個例子註冊:

​​

如果你破壞活動/服務,最佳做法不要忘記註銷在同一活動/服務的廣播接收機:

@Override 
protected void onDestroy() { 
    if(myReceiver!=null) 
     unregisterReceiver(myReceiver) 
    super.onDestroy(); 
} 

MyReceiver類:

public class MyReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context arg0, Intent intent) { 
     if(intent.getAction().equals("com.example")){ 
      //DO SOMETHING HERE 
     } 
    } 
} 
+1

清單中定義的接收者不需要以這種方式註冊。它將接收廣播並純粹基於清單條目觸發onReceive()方法。 – Maximus 2011-05-18 03:33:01

+0

啊,我明白了,這是有道理的..感謝修正maximus – 2011-05-18 05:44:05

2

設置您的myReceiver類基本上如何發佈anmustangs。

public class myReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context arg0, Intent intent) { 
     //Do something 
    } 
} 

你不應該檢查意圖行動,因爲系統會根據您已經包括在你的表現是什麼,至少在這個簡單的例子已經過濾了它。你可以有其他的動作和過濾器,在這種情況下,你需要對收到的意圖進行一些檢查。

如果您希望過濾器對數據進行過濾,則意向過濾器上的sdk文檔將覆蓋該過濾器。我對數據類型不太瞭解,所以我給出的任何示例都會相對較差。無論如何,這裏是到清單意圖過濾器頁面的鏈接: http://developer.android.com/guide/topics/manifest/intent-filter-element.html

並且數據元素的具體頁面; http://developer.android.com/guide/topics/manifest/data-element.html

+0

我想過濾使用自定義數據而不是自定義操作。 – Jimmy 2011-05-18 14:14:25

+0

好的,如果你想過濾數據,我編輯了文章以添加一些文檔鏈接。 – Maximus 2011-05-18 14:48:47

+0

我在問過問題之前看到了Android的文檔,事情是在數據節點中他們有路徑,方案和pathPrefix。我使用哪一個自定義數據?你能提供一個例子嗎? – Jimmy 2011-05-20 13:27:22