W wielu intencjach najlepszą odpowiedzią jest przekazanie użytkownikowi prostej odpowiedzi, krótkie potwierdzenie lub szybką, interaktywną reakcję. W celu realizacji tego rodzaju intencji możesz w Asystencie Google wyświetlać widżet aplikacji na Androida.
Z tego przewodnika dowiesz się, jak wypełniać zapytania użytkowników do Asystenta za pomocą widżetów, a także jak usprawnić działanie widżetu w Asystencie dzięki bibliotece rozszerzeń widżetów Działań w aplikacji.
Korzyści
Widżety to miniaturowe widoki aplikacji, które można umieścić na urządzeniach z Androidem, takich jak program uruchamiający czy ekran blokady. Dzięki akcji w aplikacji możesz zwiększyć skuteczność widżetów, umożliwiając ich wyświetlanie w Asystencie.
- Wykrywalność: aktywnie wyświetlaj widżety w odpowiedzi na zapytania użytkowników w języku naturalnym.
- Zaangażowanie: wyświetlaj widżety bez użycia rąk, np. gdy Asystent podaje Twoje wyniki na ekranie blokady lub na Androidzie Auto.
- Przechowywanie: możesz zezwolić użytkownikom na przypinanie widżetów wyświetlanych w Asystencie do programu uruchamiającego. Funkcja przypinania wymaga biblioteki rozszerzeń widżetów.
Jak Asystent wyświetla widżety
Użytkownicy mogą wywoływać widżety w Asystencie na 2 sposoby:
- Wyraźne żądanie udostępnienia widżetu według nazwy.
- Wypowiadanie zapytania do Asystenta, które uruchamia intencję wbudowaną (BII) lub intencję niestandardową skonfigurowaną na potrzeby realizacji widżetu.
Jawne wywołanie
Aby wyraźnie wywoływać widżety dowolnej zainstalowanej aplikacji, użytkownicy mogą zapytać Asystenta na przykład:
- „OK Google, pokaż widżet PrzykładowaAplikacja”.
- „Widżety z PrzykładowaAplikacja.”
Asystent wyświetla te widżety z ogólnym wprowadzeniem: „PrzykładowaAplikacja mówi, oto widżet”. Asystent natywnie zwraca widżety na żądanie w ten sposób – deweloper aplikacji nie musi wykonywać żadnych działań, ale ta metoda wywoływania wymaga od użytkownika wyraźnej wiedzy o widżetach, by można było zażądać tego widżetu. Aby uprościć wykrywanie widżetów, użyj metody realizacji intencji opisanej w następnej sekcji.
Realizacja intencji
Ułatw sobie znajdowanie widżetów, wykorzystując je do wypełniania zapytań w języku naturalnym, które użytkownicy wykonują w Asystencie. Możesz na przykład zwracać widżet za każdym razem, gdy użytkownik uruchomi GET_EXERCISE_OBSERVATION
BII w Twojej aplikacji fitnessowej, pytając „OK Google, ile mil przejechaliśmy w tym tygodniu w przykładowej aplikacji?”. Poza uproszczeniem odkrywania widżetów
integracja widżetów z akcjami w aplikacji zapewnia też te korzyści:
- Dostęp do parametrów: Asystent udostępnia parametry intencji wyodrębnione z zapytania użytkownika do widżetu, co umożliwia dostosowane odpowiedzi.
- Niestandardowe wprowadzenie do zamiany tekstu na mowę: możesz podać ciąg tekstowy zamiany tekstu na mowę, który Asystent poinformuje Cię, gdy wyświetla widżet.
- Przypinanie widżetów: Asystent wyświetla przycisk Dodaj ten widżet obok widżetu, dzięki czemu użytkownicy mogą je łatwo przypiąć do programu uruchamiającego.
Implementacja realizacji widżetów
Aby zaimplementować realizację widżetów na potrzeby swoich intencji, wykonaj te czynności:
- Zaimplementuj widżet na Androida, wykonując czynności opisane w sekcji Tworzenie prostego widżetu.
- W pliku zasobów
shortcuts.xml
aplikacji dodaj element<app-widget>
do możliwości zawierającej szczegóły realizacji i tagi BII<parameter>
. Zaktualizuj widżet, aby obsługiwał parametry. - Dodaj wymaganą bibliotekę rozszerzeń widżetów, która umożliwia Asystentowi przekazywanie nazw i parametrów BII do widżetów. Umożliwia też korzystanie z funkcji wprowadzania na potrzeby zamiany tekstu na mowę oraz funkcji przypinania widżetów.
W tej sekcji opisano schemat <app-widget>
dla shortcuts.xml
.
Schemat widżetu
Elementy <app-widget>
są zdefiniowane jako realizacji w elementach <capability>
w elemencie shortcuts.xml
. Wymagają tych atrybutów, chyba że wskazano jako opcjonalne:
Tag `shortcuts.xml` | Zawarte w | Atrybuty |
---|---|---|
<app-widget> |
<capability> |
|
<parameter> |
<app-widget> |
|
<extra> |
<app-widget> |
|
Opis schematu widżetu
<app-Widget>
Element realizacji widżetu najwyższego poziomu.
Atrybuty:
android:identifier
: identyfikator tej realizacji. Ta wartość musi być niepowtarzalna wśród elementów realizacji<app-widget>
i<intent>
zdefiniowanych w obrębie typu<capability>
.android:targetClass
: pełna nazwa klasyAppWidgetProvider
do obsługi intencji.
<parametr>
Mapuje parametr BII na wartość <parameter>
intencji. Dla każdego elementu <app-widget>
możesz zdefiniować 0 lub więcej parametrów. Podczas realizacji Asystent przekazuje parametry, aktualizując dodatki instancji widżetu w postaci par klucz-wartość w takim formacie:
- Klucz:
android:key
zdefiniowany dla parametru. - Wartość: wartość wyodrębniona przez BII z wypowiedzi użytkownika.
Dostęp do tych dodatków uzyskujesz, wywołując metodę getAppWidgetOptions()
w powiązanym obiekcie AppWidgetManager
, która zwraca wartość Bundle
zawierającą nazwę aktywatora BII i jego parametry. Więcej informacji znajdziesz w sekcji Wyodrębnianie wartości parametrów.
Więcej informacji o dopasowywaniu parametrów BII znajdziesz w artykule Dane i dopasowywanie parametrów.
<ekstra>
Opcjonalny tag deklarujący, że w przypadku tego widżetu zostało użyte niestandardowe wprowadzenie do przekształcenia tekstu na mowę. Ten tag wymaga następujących wartości atrybutów:
android:name
:"hasTts"
android:value
:"true"
Kod demonstracyjny
Poniższy przykład z pliku shortcuts.xml
przedstawia konfigurację realizacji widżetu dla funkcji GET_EXERCISE_OBSERVATION
BII:
<capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
<app-widget
android:identifier="GET_EXERCISE_OBSERVATION_1"
android:targetClass="com.exampleapp.providers.exampleAppWidgetProvider"
android:targetPackage="com.exampleapp">
<parameter
android:name="exerciseObservation.aboutExercise.name"
android:key="exercisename">
</parameter>
<extra android:name="hasTts" android:value="true"/>
</app-widget>
</capability>
Możesz określić wiele elementów <app-widget>
lub użyć kombinacji elementów <app-widget>
i <intent>
w przypadku każdej możliwości. Dzięki temu możesz dostosować usługi do swoich potrzeb na podstawie różnych kombinacji parametrów podanych przez użytkowników. Jeśli np. użytkownik nie poda w zapytaniu miejsca odbioru, możesz go skierować do działania w aplikacji, które zawiera opcje ustawień miejsca odbioru i zwrotu. Więcej informacji o definiowaniu intencji zastępczych znajdziesz w sekcji Intencje kreacji zastępczych.
Wyodrębnianie wartości parametrów
W tej przykładowej klasie AppWidgetProvider
funkcja prywatna updateAppWidget()
jest używana do wyodrębniania nazwy BII i parametrów z opcji widżetu Bundle
:
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ class MyAppWidget : AppWidgetProvider() { override fun onUpdate( context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray ) { // There might be multiple widgets active, so update all of them for (appWidgetId in appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId) } } private fun updateAppWidget( context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val widgetText: CharSequence = context.getString(R.string.appwidget_text) // Construct the RemoteViews object val views = RemoteViews(context.packageName, R.layout.my_app_widget) views.setTextViewText(R.id.appwidget_text, widgetText) // Extract the name and parameters of the BII from the widget options val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId) val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII) // "actions.intent.CREATE_TAXI_RESERVATION" val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS) if (params != null && params.containsKey("dropoff")) { val dropoffLocation = params.getString("dropoff") // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // There might be multiple widgets active, so update all of them for (int appWidgetId : appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId); } } private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { CharSequence widgetText = context.getString(R.string.appwidget_text); // Construct the RemoteViews object RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget); views.setTextViewText(R.id.appwidget_text, widgetText); // Extract the name and parameters of the BII from the widget options Bundle optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId); String bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII); // "actions.intent.CREATE_TAXI_RESERVATION" Bundle params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS); if (params != null && params.containsKey(("dropoff"))){ String dropoffLocation = params.getString("dropoff"); // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views); } }
Biblioteka rozszerzeń widżetów
Biblioteka rozszerzenia Widżety akcji w aplikacji ulepsza widżety, aby umożliwić głosowe przekazywanie treści Asystenta. Dzięki tej bibliotece widżety mogą otrzymywać ważne informacje o realizacji z aktywatorów BII, w tym nazwę BII i parametry intencji pobrane z zapytania użytkownika.
Ta biblioteka Maven umożliwia wprowadzenie do każdego widżetu niestandardowego wprowadzenia do zamiany tekstu na mowę. Dzięki temu Asystent może informować użytkowników o podsumowaniu renderowanych treści. Umożliwia też przypinanie programu uruchamiającego, co ułatwia użytkownikom zapisywanie widżetów wyświetlanych w Asystencie na ich ekranach.
Zacznij od dodania biblioteki do sekcji zależności w pliku build.gradle
modułu aplikacji:
dependencies {
//...
implementation "com.google.assistant.appactions:widgets:0.0.1"
}
Niestandardowe wprowadzenie
Po zaimportowaniu biblioteki rozszerzeń widżetów możesz wprowadzić niestandardowe wprowadzenia do widżetów. Aby dodać definicję do AppWidgetProvider
widżetu, otwórz klasę w IDE i zaimportuj bibliotekę rozszerzeń widżetów:
Kotlin
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
Java
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ object MyAppWidget : AppWidgetProvider() { fun updateAppWidget( context: Context?, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build() // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId) // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { AppActionsWidgetExtension appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build(); // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId); // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views); } }
Rekomendacje dotyczące stylu TTS
Skorzystaj z podanych niżej zaleceń dotyczących stylu, aby zoptymalizować wprowadzenie do widżetu niestandardowego pod kątem zamiany tekstu na mowę i wyświetlanych promptów.
Rekomendacja | Zalecane: | Niezalecane |
---|---|---|
SkurczeUżywaj skrótów w potwierdzeniach zamiany tekstu na mowę. Wiadomości bez skurczów brzmią raczej na szczupkach i robotach niż naturalne i konwersacyjne. Wypowiadanie słów w rodzaju „nie mogę” czy „nie mogę” może brzmieć karze i strasznie. |
ResponseSpeech (TTS)Nie mogę znaleźć rezerwacji. ResponseText Nie udało mi się znaleźć rezerwacji. |
ResponseSpeech (TTS)Nie udało mi się znaleźć rezerwacji. ResponseText Nie udało mi się znaleźć rezerwacji. |
PrzecinkiAby zwiększyć czytelność, użyj przecinków seryjnych na listach zawierających co najmniej 3 pozycje. Bez przecinka numer seryjny poszczególne elementy na liście mogą być nieprawidłowo słyszane lub odczytywane jako grupy. W przypadku np. „żonkile, stokrotki i słoneczniki” brzmią, jakby „słoneczniki i słoneczniki” się łączyły. W przypadku „żonkili, stokrotek i słoneczników” są one wyraźnie odrębne. |
ResponseSpeech (TTS)Najpopularniejsze to żółte róże, żonkile, stokrotki i słoneczniki. ResponseText Do najpopularniejszych należą żółte róże, żonkile, stokrotki i słoneczniki. |
ResponseSpeech (TTS)Nasze najpopularniejsze to żółte róże, żonkile, stokrotki i słoneczniki. ResponseText Do najpopularniejszych należą żółte róże, żonkile, stokrotki i słoneczniki. |
CyfryZamiast tekstu używaj cyfr, aby poprawić czytelność treści wizualnych. |
ResponseSpeech (TTS)Twoje ciśnienie krwi wynosi 100 na 80. ResponseText Ciśnienie krwi wynosi 100/80. |
ResponseSpeech (TTS)Twoje ciśnienie krwi wynosi 100/80. ResponseText Ciśnienie krwi wynosi sto ponad osiemdziesiąt. |
SymboleUżywaj specjalistycznych symboli zamiast tekstu, aby poprawić czytelność treści wizualnych. |
ResponseSpeech (TTS)Twój ostatni zakup kosztował 24,65 zł. ResponseText Twój ostatni zakup kosztował 24,65 zł. |
ResponseSpeech (TTS)Twój ostatni zakup kosztował 24 dolary i 65 gr. ResponseText Ostatni zakup kosztował 24 dolary i 65 gr. |
Unikaj upominkówDzięki uprzejmości odpowiedzi wyglądają z daleka i są bardziej formalne. Zapomnij o nich i zadbaj o to, aby rozmowa była przyjazna i nieformalna. |
ResponseSpeech (TTS)Twoje zamówienie zostało dostarczone. ResponseText Twoje zamówienie zostało dostarczone. |
ResponseSpeech (TTS)Oczywiście. Twoje zamówienie zostało dostarczone. ResponseText Oczywiście. Twoje zamówienie zostało dostarczone. |
Unikaj wykrzyknikówMogą być postrzegane jako krzyki. |
ResponseSpeech (TTS)Udało Ci się dziś przebiec 2,5 mili. ResponseText Udało Ci się dziś przebiec 2,5 mili. |
ResponseSpeech (TTS)Udało Ci się dziś przebiec 2,5 mili! ResponseText Udało Ci się dziś przebiec 2,5 mili. |
CzasUżywaj cyfr: „5:15” zamiast „piętnaście piętnaście” lub „kwartał po pięciu”. W przypadku zegara 12-godzinnego wpisz AM lub PM. |
ResponseSpeech (TTS)Dostawa powinna dotrzeć do 8:15. ResponseText Dostawa powinna dotrzeć do 8:15. |
ResponseSpeech (TTS)Dostawa powinna dotrzeć dzisiaj 15 minut po 8:00 rano. ResponseText Dostawa powinna dotrzeć dzisiaj 15 minut po 8:00 rano. |
Nie skupiaj się na monologachPrzekazuj informacje, ale odpowiedzi powinny być zwięzłe. Nie wdawaj się w szczegóły bez wyraźnej informacji o korzyściach dla użytkownika. |
ResponseSpeech (TTS)W zeszłym miesiącu zużyto 159 godzin energii. ResponseText W zeszłym miesiącu udało Ci się wykorzystać 159 godzin energii. |
ResponseSpeech (TTS)Oszczędzanie energii jest bardzo ważne dla planety i środowiska. W zeszłym miesiącu udało Ci się zużyć 159 godzin energii. W tym miesiącu zostało zużytych 58 godzin energii. ResponseText Oszczędzanie energii jest bardzo ważne dla planety i środowiska. W zeszłym miesiącu udało Ci się zużyć 159 godzin energii. W tym miesiącu zostało zużytych 58 godzin energii. |
Używaj krótkich, prostych słówProsty i prosty język cieszy się największą popularnością i umożliwia korzystanie z niego przez użytkowników ze wszystkich środowisk. |
ResponseSpeech (TTS)Ostatni pomiar cukru we krwi to 126. ResponseText Ostatni odczyt cukru we krwi wyniósł 126 mg/dl. |
ResponseSpeech (TTS)Przedostatni poziom glukozy we krwi wyniósł 126. ResponseText Przedostatni poziom glukozy we krwi wyniósł 126. |
Przypinanie Menu z aplikacjami
Dzięki bibliotece rozszerzeń widżetów przycisk Dodaj ten widżet może być wyświetlany razem z widżetem w Asystencie. Aby włączyć przypinanie, dodaj do AndroidManifest.xml
tę definicję odbiornika:
<application>
<receiver android:name="com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.google.assistant.appactions.widgets.COMPLETE_PIN_APP_WIDGET" />
</intent-filter>
</receiver>
<service
android:name=
"com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action
android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" />
</intent-filter>
</service>
</application>
Dostępność zasobów reklamowych
BII obsługujące wbudowane zasoby reklamowe lub internetowe zasoby reklamowe mogą rozszerzyć te zasoby o realizację widżetów.
Wbudowane zasoby reklamowe
Ten kod z przykładowego pliku shortcuts.xml
pokazuje funkcję START_EXERCISE
BII skonfigurowaną na potrzeby wbudowanych zasobów reklamowych i realizacji widżetów:
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.StartExerciseAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
app:shortcutMatchRequired="true">
</parameter>
</app-widget>
</capability>
<shortcut android:shortcutId="RunningShortcut">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.example.exampleapp.StartExcerciseActivity" />
<capability-binding
android:capability="actions.intent.START_EXERCISE"
android:parameter="exercise.name"
android:value="running;runs" />
</shortcut>
W poprzednim przykładzie, gdy użytkownik aktywuje tę funkcję, mówiąc do Asystenta: „Rozpocznij uruchamianie z przykładową aplikacją”, pakiet opcji realizacji <app-widget>
zawiera tę parę klucz-wartość:
- Klucz =
“exerciseName”
- Wartość =
“RunningShortcut”
Zasoby reklamowe w internecie
Ten kod z przykładowego pliku shortcuts.xml
pokazuje możliwość włączania zasobów reklamowych w internecie i realizacji widżetów:
<shortcuts>
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.CreateTaxiAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
android:mimeType="text/*">
<data android:pathPattern="https://exampleapp.com/exercise/.*" />
</parameter>
</app-widget>
</capability>
</shortcuts>
Testuj działania w aplikacji
Użyj narzędzia App Actions Test Tool, czyli funkcji wtyczki Asystenta Google do Android Studio, by przetestować widżety na urządzeniu fizycznym lub wirtualnym. Aby użyć narzędzia testowego, wykonaj te czynności:
- Połącz urządzenie testowe z uruchomioną aplikacją.
- W Android Studio wybierz Narzędzia > Działania w aplikacji > Narzędzie do testowania działań w aplikacji.
- Kliknij Utwórz podgląd.
- Użyj Android Studio, aby uruchomić aplikację na urządzeniu testowym.
- Aby przetestować akcję w aplikacji, użyj aplikacji Asystent na urządzeniu testowym. Na przykład możesz powiedzieć „OK Google, ile mil przebyłeś w tym tygodniu w aplikacji ExampleApp?”.
- Obserwuj działanie swojej aplikacji lub użyj debugera Android Studio, aby potwierdzić oczekiwane działanie.
Wskazówki dotyczące jakości
W tej sekcji omawiamy kluczowe wymagania i sprawdzone metody integrowania akcji w aplikacji z widżetami.
Treści w widżetach
- (Wymagane) Nie wyświetlaj reklam w widżecie.
- Skoncentruj się całkowicie na treści widżetu zgodnie z zamierzeniem. Nie próbuj realizować wielu intencji za pomocą jednego widżetu ani nie dodawaj nietrafnych treści.
Uwierzytelnienie
- (Wymagane) Jeśli do zakończenia działania użytkownika wymagane jest uwierzytelnianie użytkownika, zwracaj widżet wyjaśniający, że użytkownik musi kontynuować korzystanie z aplikacji. Wbudowane uwierzytelnianie użytkowników w Asystencie Google nie jest obsługiwane w przypadku Akcji dotyczących aplikacji.
- Jeśli użytkownicy zezwalają aplikacji na wyświetlanie danych za pomocą widżetów, możesz zwrócić widżet błędu w czasie działania w przypadku nieautoryzowanych użytkowników.
Intencje zastępcze
(Wymagane) W obiekcie
shortcuts.xml
oprócz realizacji widżetu zawsze podaj też kreację zastępczą<intent>
dla danej możliwości. Intencja zastępcza to element<intent>
bez wymaganych wartości<parameter>
.Dzięki temu Asystent może wykonać działanie, gdy zapytanie użytkownika nie zawiera parametrów wymaganych przez inne elementy realizacji zdefiniowane w funkcji. Wyjątkiem jest sytuacja, w której nie ma parametrów wymaganych do danej funkcji. W takim przypadku potrzebna jest tylko realizacja widżetu.
Użyj intencji zastępczej, aby otworzyć aplikację na odpowiednim ekranie, a nie na ekranie głównym.
Ten kod z przykładowego pliku shortcuts.xml
pokazuje element <capability>
z wartością zastępczą <intent>
obsługującą główną realizację <app-widget>
:
<shortcuts>
<capability
android:name="actions.intent.CREATE_TAXI_RESERVATION">
<!-- Widget with required parameter, specified using the "android:required" attribute. -->
<app-widget
android:identifier="CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.CreateTaxiAppWidgetProvider">
<parameter
android:name="taxiReservation.dropoffLocation.name"
android:key="dropoff"
android:required="true">
</parameter>
</app-widget>
<!-- Fallback intent with no parameters required to successfully execute. -->
<intent
android:identifier="CREATE_TAXI_RESERVATION_3"
android:action="myapplication.intent.CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.TaxiReservationActivity">
</intent>
</capability>
</shortcuts>
Ujawnianie danych w Google Play
Ta sekcja zawiera informacje o tym, jakie dane użytkowników są zbierane przez najnowszą wersję biblioteki rozszerzeń widżetów.
Ten pakiet SDK wysyła udostępniane przez dewelopera odpowiedzi zamiany tekstu na mowę (TTS), które są wypowiadane użytkownikowi przez Asystenta Google przy użyciu technologii rozpoznawania mowy Asystenta. Te informacje nie są przechowywane przez Google.
Działania w aplikacji mogą też zbierać metadane aplikacji klienta w tych celach:
- Monitorowanie wskaźnika rozpowszechnienia różnych wersji pakietu SDK
- Aby sprawdzić wykorzystanie funkcji pakietu SDK w różnych aplikacjach