2014-09-29 28 views
0

我用下面的廣播從我的MainActivity的onCreate意圖:廣播不是我的全班第一

Intent i = new Intent(this, MyNewReceiver.class); 
sendBroadcast(i); 

這裏是我的接收機類:

public class MyNewReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i("OK", "RECEIVED"); 
    } 

} 

我沒有得到任何錯誤,但我還沒有得到我的Log

我知道這不是真的BroadcastReceiver是爲了什麼,但在這種情況下,我需要手動觸發一次。

回答

0

顯式意圖(您指定目標類的Intent)並不是要啓動BroadcastReceivers,而是使用IntentFilters通過implcit意圖接收意圖。原因是整個廣播機制的目的是能夠發送事件而不知道誰將會聽他們。

http://developer.android.com/guide/components/intents-filters.html#Receiving

實現這一目標的方式是:

首先聲明的廣播接收器在你的清單與它suppossed聽的動作一起。 在這裏,您對如何做到這一點的例子:

<receiver android:name="your.package.MyNewReceiver" > 
    <intent-filter> 
     <action android:name="your.action.string" /> 
    </intent-filter> 
</receiver> 

操作字符串可能是你喜歡的任何字符串,但它通常是一個好主意,挑一個java包風格的東西與包裝自己的應用程序中。

最後發送的意圖指定操作字符串是這樣的:

Intent intent = new Intent("your.action.string"); 
sendBroadcast(intent); 

希望它能幫助。