如何在WidgetConfigActivity中获取Widget Provider名称?
配置共用同一配置Activity的多个App Widget
看来你需要给两个不同的Widget(Small Widget和Big Widget)共用同一个WidgetConfigActivity,我帮你整理了完整的AndroidManifest.xml配置示例和核心要点:
完整的Manifest配置代码
<!-- Small Widget 接收器配置 --> <receiver android:name=".SmallWidgetProvider" android:icon="@drawable/small_widget_icon" android:label="@string/small_widget"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_small_info" /> </receiver> <!-- Big Widget 接收器配置 --> <receiver android:name=".BigWidgetProvider" android:icon="@drawable/big_widget_icon" android:label="@string/big_widget"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_big_info" /> </receiver> <!-- 共用的配置Activity --> <activity android:name=".WidgetConfigActivity"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> </intent-filter> </activity>
核心配置说明
- 每个Widget单独声明接收器:Small和Big Widget需要各自的AppWidgetProvider子类(也就是
SmallWidgetProvider和BigWidgetProvider),对应独立的<receiver>标签,分别指定自己的图标、名称和Widget信息配置文件(widget_small_info.xml和widget_big_info.xml)。 - 配置Activity的通用处理逻辑:在WidgetConfigActivity中,你需要区分当前配置的是哪个Widget:
- 通过
getIntent().getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID)获取当前要配置的Widget ID - 调用
AppWidgetManager.getInstance(this).getAppWidgetInfo(appWidgetId)拿到Widget的信息,通过widgetInfo.provider或者配置文件里的自定义属性来判断是Small还是Big Widget,再加载对应的配置UI或业务逻辑
- 通过
- 完成配置后触发Widget更新:配置流程结束后,记得发送
AppWidgetManager.ACTION_APPWIDGET_UPDATE广播,传入对应的Widget ID,触发目标Widget的界面更新。
内容的提问来源于stack exchange,提问作者c0dehunter
相关产品推荐
相关产品推荐

