Cómo fijar widgets de De un vistazo en la app
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Con Android 8.0 (nivel de API 26) y versiones posteriores, puedes permitir que los usuarios fijen tus widgets a la pantalla principal dentro de tu app. Promocionar widgets directamente en tu app es una excelente manera de aumentar la participación de los usuarios, especialmente después de que un usuario completa una tarea relacionada o cuando un usuario accede repetidamente a una función en tu app.
Cómo crear una solicitud de fijación
Para iniciar la fijación de widgets, usa el método requestPinGlanceAppWidget
de la clase GlanceAppWidgetManager
. Para las apps que se ejecutan en versiones anteriores de Android, se devuelve false. Sin embargo, si la solicitud se envía correctamente al sistema, se devuelve el valor verdadero.
A continuación, se muestra un ejemplo de cómo puedes crear una solicitud de PIN:
@Composable
fun AnInAppComposable() {
val context = LocalContext.current
val coroutineScope = rememberCoroutineScope()
Button(
onClick = {
coroutineScope.launch {
GlanceAppWidgetManager(context).requestPinGlanceAppWidget(
receiver = MyWidgetReceiver::class.java,
preview = MyWidget(),
previewState = DpSize(245.dp, 115.dp)
)
}
}
) {}
}
En este ejemplo, MyWidgetReceiver
es la clase que recibe las devoluciones de llamada del widget, y MyWidget
es el widget de Glance que quieres fijar. El successCallback
es un PendingIntent
que se activa cuando el widget se fija correctamente.
Cómo controlar la respuesta a la solicitud de PIN
Cuando un usuario responde el diálogo de solicitud de PIN, tu app recibe una respuesta. Si el usuario acepta la solicitud, tu widget se fijará en su pantalla principal y se activará el successCallback
PendingIntent
. Si el usuario rechaza la solicitud, no sucede nada.
Es importante tener en cuenta que el objeto successCallback
solo se activa si el widget se agrega correctamente a la pantalla principal. No se activa si el usuario rechaza la solicitud o si el selector no admite la fijación.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-08-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-26 (UTC)"],[],[],null,["With Android 8.0 (API level 26) and higher, you can let users pin your\nwidgets to their home screen within your app. Promoting widgets directly within\nyour app is a great way to increase user engagement, especially after a\nuser completes a related task, or when a user repeatedly accesses a feature in\nyour app.\n\nCreate a Pin Request\n\nTo initiate widget pinning, use the [`requestPinGlanceAppWidget`](/reference/kotlin/androidx/glance/appwidget/GlanceAppWidgetManager#requestPinGlanceAppWidget(java.lang.Class,androidx.glance.appwidget.GlanceAppWidget,kotlin.Any,android.app.PendingIntent)) method\nfrom the [`GlanceAppWidgetManager`](/reference/kotlin/androidx/glance/appwidget/GlanceAppWidgetManager) class. For apps running on lower versions\nof Android, this returns false. However if the request is successfully sent\nto the system, this returns true.\n\nHere is an example of how you can create a pin request:\n\n\n```kotlin\n@Composable\nfun AnInAppComposable() {\n val context = LocalContext.current\n val coroutineScope = rememberCoroutineScope()\n Button(\n onClick = {\n coroutineScope.launch {\n GlanceAppWidgetManager(context).requestPinGlanceAppWidget(\n receiver = MyWidgetReceiver::class.java,\n preview = MyWidget(),\n previewState = DpSize(245.dp, 115.dp)\n )\n }\n }\n ) {}\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlancePinAppWidget.kt#L44-L59\n```\n\n\u003cbr /\u003e\n\nIn this example, `MyWidgetReceiver` is the class that receives the widget's\ncallbacks, and `MyWidget` is the Glance widget you want to pin. The\n`successCallback` is a `PendingIntent` that is triggered when the widget is\nsuccessfully pinned.\n\nHandle the Pin Request Response\n\nWhen a user responds to the pin request dialog, your app receives a\nresponse. If the user accepts the request, your widget is pinned to their\nhome screen, and the `successCallback` `PendingIntent` is triggered. If the\nuser denies the request, nothing happens.\n\nIt is important to note that the `successCallback` is only triggered if the\nwidget is successfully added to the home screen. It is not triggered if the user\ndenies the request or if the launcher does not support pinning."]]