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

求助:从主屏幕删除Glance Jetpack组件失败,代码执行无效

解决Glance Jetpack组件无法从主屏幕删除的问题
  • 你当前的问题在于直接调用glanceAppWidget.onDelete()是错误的,这个方法是Glance组件收到系统删除回调时的内部处理逻辑,不能主动调用它来删除主屏幕上的组件。
  • 正确的做法是通过系统的AppWidgetManager执行删除操作,修改后的代码如下:
val scope = CoroutineScope(Dispatchers.Default)

scope.launch {
    val glanceManager = GlanceAppWidgetManager(context)
    val glanceId = glanceManager.getGlanceIds(ActionWidget::class.java).last()
    // 将GlanceId转换为系统识别的AppWidgetId
    val appWidgetId = glanceId.toAppWidgetId()
    // 获取AppWidgetManager实例
    val appWidgetManager = AppWidgetManager.getInstance(context)
    // 执行删除操作
    appWidgetManager.deleteAppWidget(appWidgetId)
}
  • 额外注意事项:
    • 确保你获取的glanceId是对应主屏幕上目标组件的ID,如果存在多个同类型组件,last()不一定能命中目标,需要根据实际场景调整筛选逻辑
    • 确认你的应用拥有对应AppWidget的控制权,避免权限问题导致删除失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:32:35