对不同的变体使用相同的AppWidgetProvider

时间:2018-01-15 14:32:35

标签: android

我支持相同基本小部件的不同变体(暗方案,灯光方案等),并发现我不能在清单中的多个接收器声明中使用相同的提供者类,例如: / 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获取小部件信息)。有没有办法让我错过这个限制?

0 个答案:

没有答案