我支持相同基本小部件的不同变体(暗方案,灯光方案等),并发现我不能在清单中的多个接收器声明中使用相同的提供者类,例如: / p>
<receiver android:name=".otd.OtdWidgetProvider" android:label="@string/otd_widget_label">
<meta-data android:name="android.appwidget.provider" android:resource="@xml/otd_appwidget_provider"/>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
</receiver>
<receiver android:name=".otd.OtdWidgetProvider" android:label="@string/otd_widget_label">
<meta-data android:name="android.appwidget.provider" android:resource="@xml/otd_appwidget_light_provider"/>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
</receiver>
请注意,每个接收器都会声明一个不同的XML文件,这是指定不同布局的位置。我通过创建具有不同名称的相同提供者类(例如,“otd.OtdWidgetProviderLight”等)来解决这个问题,但使用相同的提供者类会更有效(在内部,提供者可以通过查找来轻松区分变体通过AppWidgetManager获取小部件信息)。有没有办法让我错过这个限制?