Wykrywalność widżetu

Na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym na ekranie głównym widżety mogą być przypinane do ekranu głównego. Podobnie jak przypięte skróty, te przypięte widżety zapewniają użytkownikom dostęp do określonych zadań w aplikacji. Można je dodawać do ekranu głównego bezpośrednio z aplikacji, jak pokazano w tym filmie.

Przykład układu elastycznego
Rysunek 2. Przykład przypinania widżetu

Zezwalanie użytkownikom na przypinanie widżetów

W aplikacji możesz utworzyć prośbę o przypięcie widżetu do obsługiwanego przez system launchera, wykonując te czynności:

  1. Pamiętaj, aby zadeklarować widżet w pliku manifestu aplikacji.

  2. Wywołaj metodę requestPinAppWidget(), jak pokazano w tym fragmencie kodu:

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

Użytkownicy odkrywają i dodają widżet za pomocą selektora widżetów lub w aplikacji, gdy funkcja widżetu jest najbardziej odpowiednia. Więcej informacji znajdziesz w artykule Wyszukiwanie i promowanie.