2012-09-28 42 views
1

我一直在更改所有引用此定製意圖的問題。又名我改名,不再註冊。然而,更關心的是,我似乎無法獲得任何廣播的意圖! (不包括APPWIDGET_UPDATE)。Android:未收到任何廣播的意圖

<receiver android:name=".ExampleAppWidgetProvider" 
      android:label="@string/widget1name"> 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     <!-- <action android:name="com.eightbitcloud.example.widget.8BITCLOCK_WIDGET_UPDATE" /> --> 
     <action android:name="android.intent.action.MEDIA_REMOVED" /> 
     <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> 
     <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
     <action android:name="android.intent.action.SCREEN_ON" /> 

    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1_info" /> 
</receiver> 

隨着代碼:

@Override 
public void onReceive(Context context, Intent intent) { 
     Log.d(LOG_TAG, "Received intent " + intent.getAction()); 

觸發該只有一個是Appwidget_update。

爲什麼?

回答

1

這是與我的onEnabled()事件做,創造了一次又一次發送給意向的alarmManager。

通過改變我收到的東西,我明顯地篩選出了舊的。

但是我沒有看到的是,當我運行新代碼時,Eclipse正在替換我的小部件,但它再也不會重新啓動onEnabled。

所以舊的意圖仍然是開火,並被過濾,而不是我的新命名意圖。

重新啓動手機,和/或移除的部件和替換他們應該做的伎倆(所以OnEnabled()再次發射)

0

你忘了在意圖過濾器默認類別:

<category android:name="android.intent.category.DEFAULT" /> 
+0

謝謝,但香港專業教育學院已經嘗試過這一點,文檔說'原則,因此,不管類別中的內容,不管類別的意圖對象都應該通過此測試。「它只會增加更多的限制。在目前,任何匹配的行動應該通過測試 – Doomsknight

2

,如果你在代碼註冊一個接收器的一些廣播事件,僅啓動。嘗試添加到您的onCreate:

registerReceiver(new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.e("test","screen changed!!!"); 
     } 
}, new IntentFilter(Intent.ACTION_SCREEN_ON)); 
+0

我也從他的答案中也聽到了普通軟件的這個。但是,您無法註冊接收者的接收者。我試圖爲一個小部件做到這一點。 「intentreceiver組件不允許註冊以接收意圖」。無論如何 – Doomsknight