Wykrywalność widżetu

Na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym mogą być uruchamiane programy uruchamiające, użytkownicy tworzą przypięte skróty, pozwalają przypinać widżety do ekranu głównego. Te funkcje są podobne do przypiętych skrótów przypięte widżety – umożliwiają użytkownikom dostęp do określonych zadań w aplikacji. do ekranu głównego bezpośrednio z aplikacji, jak widać w następnym filmie.

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

Umożliwianie użytkownikom przypinania widżetu

W aplikacji możesz utworzyć żądanie, aby system przypiął widżet 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 funkcję 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 gdy widżet jest najodpowiedniejszy. Więcej informacji: Odkrywanie i promowanie.