Visibilidad del widget

En dispositivos con Android 8.0 (nivel de API 26) y versiones posteriores, los selectores que permiten los usuarios también crean atajos fijados para que puedan fijar widgets en la pantalla principal. Al igual que los accesos directos fijos, estos los widgets fijados les dan a los usuarios acceso a tareas específicas de tu aplicación agregar a la pantalla principal directamente desde la app, como se muestra en el siguiente video.

Ejemplo de diseño responsivo
Figura 2: Ejemplo de fijación de un widget.

Permite que los usuarios fijen un widget

En tu app, puedes crear una solicitud para que el sistema fije un widget a una para el selector compatible. Para ello, completa los siguientes pasos:

  1. Asegúrate de declarar un widget en el archivo de manifiesto de tu app.

  2. Llama al 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);
}

Los usuarios descubren y agregan tu widget a través del selector de widgets o desde tu cuando la funcionalidad del widget es más relevante. Para obtener más información, consulta Descubrimiento y promoción.