Visibilidad del widget

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
Figura 2: Ejemplo de cómo fijar un widget.

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:

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

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

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.