es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo actualizar el AppWidgetState de un Compose Glance Widget desde una configuración/actividad principal?

Mi última idea fue utilizar

updateAppWidgetState(context = context, definition = PreferencesGlanceStateDefinition, glanceId = glanceId) {
   // ...
}

y

GlanceWidget().update(context = context, glanceId = glanceId)

pero no tengo acceso a glanceId.

El trasfondo de la pregunta es que quiero agregar el “uid” al AppWidgetState como se describe en esta pregunta: https://stackoverflow.com/questions/70404757/how-to-get-the-appwidgetid-of-a-compose-glance-widget/70425263#70425263

¿Cómo puedo obtener el glanceId (por ejemplo, a partir del appWidgetId al que tengo acceso en la actividad de configuración) o cómo más podría lograr esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el glanceId, puedes usar el método getAppWidgetOptions en la clase AppWidgetManager para recuperar el paquete de opciones asociado con el widget, el cual debería contener el par clave-valor glanceId:

    val appWidgetManager = AppWidgetManager.getInstance(context)
    val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
    val glanceId = options.getInt("glanceId", -1)
    

    Alternativamente, puedes pasar el glanceId a ConfigureActivity como un extra en el intent al lanzarla, y luego recuperarlo en el método updateAppWidgetState:

    // En ConfigureActivity:
    val intent = Intent(context, MainActivity::class.java)
    intent.putExtra("glanceId", glanceId)
    // ...
    
    // En updateAppWidgetState:
    val glanceId = (context as? MainActivity)?.intent?.getIntExtra("glanceId", -1) ?: -1
    if (glanceId != -1) {
        // ...
    }
    

    De cualquier manera, una vez que tengas el glanceId, puedes usarlo para actualizar el estado del widget según lo deseado.

Comments are closed.