Wykrywalność widżetu

Na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym aplikacje uruchamiające, które pozwalają użytkownikom tworzyć przypięte skróty, pozwalają też przypinać widżety do ekranu głównego. Podobnie jak w przypadku przypiętych skrótów, te przypięte widżety dają użytkownikom dostęp do określonych zadań w aplikacji i można je dodać do ekranu głównego bezpośrednio z aplikacji, jak widać w filmie poniżej.

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

Umożliwianie użytkownikom przypinania widżetu

Możesz utworzyć w aplikacji prośbę o przypięcie widżetu do obsługiwanego programu uruchamiającego, wykonując te czynności:

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

  2. Wywołaj metodę requestPinAppWidget() zgodnie z poniższym fragmentem 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 aplikacji, jeśli jego funkcje są najbardziej przydatne. Więcej informacji znajdziesz w artykule na temat odkrywania i promocji.