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>



后来它说了如何添加类:


  公共类ExampleAppWidgetProvider扩展了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);
    }
} }



它说我需要声明该类为广播接收器。

所以我的问题是:我的应用程序中有接收器,但是如何添加类并将其声明为广播接收器?
如果有人用类发布了示例接收器代码,那将很有帮助,因此我知道如何将其组合在一起。
如果这是一个愚蠢的问题,我感到很抱歉,我对此并不陌生。

最佳答案

Right from the docs:


  AppWidgetProvider类将BroadcastReceiver扩展为方便
  类来处理App Widget广播。 AppWidgetProvider
  仅接收与应用程序相关的事件广播
  小部件,例如应用小部件的更新,删除,启用和
  禁用的。


换句话说:由于您的ExampleAppWidgetProvider是从AppWidgetProvider类继承的,因此,由于AppWidgetProvider扩展了BroadcastReceiver,因此它也是一个android.content.BroadcastReceiver。因此,无需将您的类显式声明为广播接收器。此外,这就是文档所说的(再次):


  您必须将AppWidgetProvider类的实现声明为
  使用AndroidManifest中的receiver元素的广播接收器


正如我所看到的,您已经做到了。 ;)

07-26 09:42