<receiver android:name=".MusicWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@layout/widget_setting">
</meta-data>
android:name 后面的是怎么确定的?怎么跟widget对应起来的?
action有兩種,一種是系統級action,另一種是應用自訂action。對於widget來說,要實現widget更新,就必須得過濾監聽android.appwidget.action.APPWIDGET_UPDATE 這個action,這是由系統級的action,由AppWidgetManger定義和管理,系統Framework層AppWidgetService負責widget的廣播發送支持,最終由應用層AppWidgetProvider(派生自BroadcastReceiver)接收這個action並進行處理。
這個name需要指定一個Receiver的子類別或是AppWidgetProvider子類別, 當這個meta-data裡面的指定的AppWidgetProviderInfo對應的widget被使用者加入主畫面或刪除, 或更新, 等操作, 這個name指定的Receiver都會收到對應的廣播. 廣播的Intent裡麵包含有對應的AppWidget的id, 這個id就可以透過AppWidgetManager找到對應的AppWidget