You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Glance Widget:重新配置时如何获取初始配置数据?

解决Glance Beta-01版本重新配置Widget时获取原始配置数据的问题

在Glance beta-01版本中,rememberAppWidgetConfigurationState的getCurrentState方法逻辑发生了调整,无法直接获取已创建Widget的原始配置数据。你可以通过GlanceAppWidgetManager手动查询目标Widget的已有配置,实现重新配置界面的表单自动填充。

具体修改方案

  1. 通过上下文获取GlanceAppWidgetManager实例,用于查询指定Widget的状态存储
  2. 利用glanceId定位目标Widget,读取其已保存的Preferences配置
  3. 将读取到的原始数据赋值给表单状态变量,完成自动填充

修改后的代码示例

@Composable
private fun ConfigurationScreen() {
    val context = LocalContext.current
    val scope = rememberCoroutineScope()
    // 确保selectedData是可观察的可变状态,用于绑定表单
    var selectedData by remember { mutableStateOf("") }

    val configurationState = rememberAppWidgetConfigurationState(RowWidget)
    val glanceManager = remember { GlanceAppWidgetManager(context) }

    fun updatePref() {
        configurationState.updateCurrentState<Preferences> {
            it.toMutablePreferences().apply {
                set(WidgetReceiver.data, selectedData)
            }.toPreferences()
        }
    }

    if (configurationState.glanceId == null) {
        configurationState.discardConfiguration()
        return
    }

    // 自动填充原始配置数据
    LaunchedEffect(configurationState.glanceId) {
        // 通过GlanceAppWidgetManager获取目标Widget的状态容器
        val existingState = glanceManager.getGlanceState(configurationState.glanceId)
        // 读取已保存的Preferences数据
        val currentData = existingState?.get<Preferences>(GlanceAppWidget.DEFAULT_PREFERENCES_KEY)
            ?.get(WidgetReceiver.data)
        
        if (currentData != null) {
            selectedData = currentData
            updatePref()
        }
    }

    AppWidgetConfigurationScaffold(/* 你的脚手架配置参数 */) {
        // 此处放置你的表单UI,使用selectedData自动填充字段
    }
}

关键说明

  • GlanceAppWidget.DEFAULT_PREFERENCES_KEY是Glance默认存储配置数据的key,需通过它从Widget状态容器中取出Preferences对象
  • 以configurationState.glanceId作为LaunchedEffect的依赖项,确保glanceId确定后再执行数据查询,避免空指针
  • 确认WidgetReceiver.data的类型与保存时一致,避免类型转换异常

内容的提问来源于stack exchange,提问作者Jscti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:52:50