2014-09-05 19 views
1

https://developer.android.com/guide/topics/appwidgets/index.html如何添加應用程序控件提供一流

它說明了如何聲明它在清單:

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

後來它說如何添加類:

公衆classAppWidgetProvider擴展了AppWidgetProvider {

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    final int N = appWidgetIds.length; 

    // Perform this loop procedure for each App Widget that belongs to this provider 
    for (int i=0; i<N; i++) { 
     int appWidgetId = appWidgetIds[i]; 

     // Create an Intent to launch ExampleActivity 
     Intent intent = new Intent(context, ExampleActivity.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 

     // Get the layout for the App Widget and attach an on-click listener 
     // to the button 
     RemoteViews views = new RemoteViews(context.getPackageName(), 
R.layout.appwidget_provider_layout); 
     views.setOnClickPendingIntent(R.id.button, pendingIntent); 

     // Tell the AppWidgetManager to perform an update on the current app widget 
     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} } 

而且它說我需要將該類聲明爲廣播接收器。

所以我的問題是:我有接收器在我的應用程序,但我怎麼添加類和聲明爲廣播接收器? 如果有人發佈了一個類的接收器示例代碼,這將是有益的,所以我知道如何把它放在一起。 對不起,如果這是一個愚蠢的問題,我只是新來的這一切。

回答

1

Right from the docs:

的AppWidgetProvider類擴展的BroadcastReceiver作爲一種方便 類來處理應用程序的widget廣播。該的AppWidgetProvider 只接收事件廣播是相關的在App 的Widget,當應用程序的Widget被更新,刪除等,啓用和禁用 。

換句話說:由於您的ExampleAppWidgetProviderAppWidgetProvider類,它也是一個BroadcastReceiver以來的AppWidgetProvider擴展android.content.BroadcastReceiver繼承。所以沒有必要將你的課堂陳述聲明爲廣播接收者。此外這就是文檔說什麼(再次):

您必須聲明你的AppWidgetProvider類的實現作爲AndroidManifest

使用接收器元件一個 廣播接收機,當我看到它,你已經做到了。 ;)

+0

但我沒有我的應用程序中的類(即我沒有類似這樣的:public void onUpdate(Context context,AppWidgetManager appWidgetManager,int [] appWidgetIds){final int N = appWidgetIds。長度; //對屬於此提供程序的每個App Widget執行此循環過程(int i = 0; i user613 2014-09-06 10:24:34

+0

好的,但如果你不想爲你的應用程序添加一個'Widget',這個類是必需的。在AppWidgetProvider裏面,處理Widget所需的所有東西,比如誇大視圖,顯示文本等。 – reVerse 2014-09-06 10:37:41

+0

因此,類似於我的問題中第二個引號中的代碼的代碼是要在res-xml中進入應用程序窗口小部件提供程序? – user613 2014-09-06 21:38:56

相關問題