En los dispositivos con Android 8.0 (nivel de API 26) y versiones posteriores, los selectores que permiten a los usuarios crear accesos directos fijos también les permiten fijar widgets en la pantalla principal. Al igual que los accesos directos fijos, estos widgets fijos ofrecen a los usuarios acceso a tareas específicas de tu app y se pueden agregar a la pantalla principal directamente desde la app, como se muestra en el siguiente video.
![Ejemplo de diseño responsivo](https://developer.android.google.cn/static/images/appwidgets/widget_pinning.gif?hl=es-419)
Permite que los usuarios fijen un widget
En tu app, puedes crear una solicitud para que el sistema fije un widget en un selector compatible completando los siguientes pasos:
Asegúrate de declarar un widget en el archivo de manifiesto de tu app.
Llama al método
requestPinAppWidget()
, como se muestra en el siguiente fragmento de código:
Kotlin
val appWidgetManager = AppWidgetManager.getInstance(context) val myProvider = ComponentName(context, ExampleAppWidgetProvider::class.java) if (appWidgetManager.isRequestPinAppWidgetSupported()) { // Create the PendingIntent object only if your app needs to be notified // when the user chooses to pin the widget. Note that if the pinning // operation fails, your app isn't notified. This callback receives the ID // of the newly pinned widget (EXTRA_APPWIDGET_ID). val successCallback = PendingIntent.getBroadcast( /* context = */ context, /* requestCode = */ 0, /* intent = */ Intent(...), /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT) appWidgetManager.requestPinAppWidget(myProvider, null, successCallback) }
Java
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); ComponentName myProvider = new ComponentName(context, ExampleAppWidgetProvider.class); if (appWidgetManager.isRequestPinAppWidgetSupported()) { // Create the PendingIntent object only if your app needs to be notified // when the user chooses to pin the widget. Note that if the pinning // operation fails, your app isn't notified. This callback receives the ID // of the newly pinned widget (EXTRA_APPWIDGET_ID). PendingIntent successCallback = PendingIntent.getBroadcast( /* context = */ context, /* requestCode = */ 0, /* intent = */ new Intent(...), /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT); appWidgetManager.requestPinAppWidget(myProvider, null, successCallback); }
Orientación de diseño relacionada
Los usuarios descubren y agregan tu widget a través del selector de widgets o desde tu app cuando la funcionalidad del widget es más relevante. Para obtener más información, consulta Descubrimiento y promoción.