Skróty ułatwiają użytkownikom dostarczanie określonych rodzajów treści, pomagając im uzyskać szybki dostęp do różnych części aplikacji.
![Obraz pokazujący kontrast między skrótami do aplikacji i przypiętymi skrótami](https://developer.android.com/static/images/guide/topics/ui/shortcuts/pinned-shortcuts.png?authuser=9&hl=pl)
Sposób dostarczania treści za pomocą skrótów zależy od konkretnego przypadku użycia oraz tego, kontekstu skrótu zależy od aplikacji lub użytkownika. Chociaż elementy statyczne kontekst skrótu nie zmienia się, a kontekst dynamicznego skrótu stale się nie zmienia. zmian, aplikacja zapewnia kontekst w obu przypadkach. Gdy użytkownik decyduje, jak aplikacja ma dostarczać im treści, np. przy użyciu przypiętego skrótu, kontekst jest określany przez użytkownika. Poniższe scenariusze opisują kilka zastosowań przypadków dla każdego typu skrótu:
- Statyczny sprawdzają się w przypadku aplikacji, które zawierają linki do treści w całym cyklu interakcji użytkownika z reklamą Aplikacja. Większość programów uruchamiających tylko wyświetl cztery skróty statyczne przydają się podczas rutynowych czynności w spójny sposób, na przykład gdy użytkownik chce wyświetlić swój kalendarz wysyłać e-maile w określony sposób .
- Dynamiczne skrótów pozwalają wykonać działania w aplikacjach, które z uwzględnieniem kontekstu. Skróty zależne od kontekstu są dostosowane do czynności w aplikacji wykonywane przez użytkowników. Jeśli na przykład stworzysz grę, która umożliwia użytkownik zaczyna od obecnego poziomu, musisz zaktualizować do obsługi skrótów. Użycie skrótu dynamicznego pozwala zaktualizować skrót za każdym razem, gdy użytkownik skasuje poziom.
- Przypięte są używane do obsługi określonych działań użytkowników. Przykład: użytkownik może chcieć przypiąć określoną stronę w Menu z aplikacjami. To jest Korzystne, bo pozwala użytkownikowi wykonać niestandardowe działanie, np. jednorazowe przejście do witryny, szybsze niż przy użyciu z instancji przeglądarki.
Utwórz statyczne skróty
Statyczne skróty zawierają linki do ogólnych działań w aplikacji. Mogą to być Działania muszą być spójne przez cały okres istnienia bieżącej wersji aplikacji. Dobre opcje skrótów statycznych obejmują wyświetlanie wysłanych wiadomości, ustawienie alarm, oraz wyświetlanie codziennej aktywności użytkownika.
Aby utworzyć statyczny skrót:
-
W pliku
AndroidManifest.xml
aplikacji znajdź aktywność, której filtry intencji są ustawione naandroid.intent.action.MAIN
działania orazandroid.intent.category.LAUNCHER
. -
Dodaj
<meta-data>
do tego działania, który odwołuje się do pliku zasobów, w którym aplikacja zdefiniowano skróty:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application ... > <activity android:name="Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" /> </activity> </application> </manifest>
-
Utwórz nowy plik zasobów o nazwie
res/xml/shortcuts.xml
. -
W nowym pliku zasobów dodaj element główny
<shortcuts>
zawierający listę elementów<shortcut>
. W każdym<shortcut>
– podaj informacje o obiekcie statycznym skrót, w tym jego ikonę, etykiety opisu i uruchomione przez niego intencje w aplikacji:<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:shortcutId="compose" android:enabled="true" android:icon="@drawable/compose_icon" android:shortcutShortLabel="@string/compose_shortcut_short_label1" android:shortcutLongLabel="@string/compose_shortcut_long_label1" android:shortcutDisabledMessage="@string/compose_disabled_message1"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.example.myapplication" android:targetClass="com.example.myapplication.ComposeActivity" /> <!-- If your shortcut is associated with multiple intents, include them here. The last intent in the list determines what the user sees when they launch this shortcut. --> <categories android:name="android.shortcut.conversation" /> <capability-binding android:key="actions.intent.CREATE_MESSAGE" /> </shortcut> <!-- Specify more shortcuts here. --> </shortcuts>
Dostosuj wartości atrybutów
Na poniższej liście znajdziesz opisy różnych atrybutów w
statycznego skrótu. Podaj wartość w polach android:shortcutId
i
android:shortcutShortLabel
Wszystkie inne wartości są opcjonalne.
-
android:shortcutId
-
Literał łańcuchowy reprezentujący skrót, gdy
ShortcutManager
i wykonuje na nim operacje. -
android:shortcutShortLabel
-
zwięzłe wyrażenie opisujące przeznaczenie skrótu. Jeśli to możliwe, ogranicz ten krótki tekst do 10 znaków.
Więcej informacji:
setShortLabel()
-
android:shortcutLongLabel
-
Rozszerzone wyrażenie opisujące przeznaczenie skrótu. Jeśli masz wystarczająco dużo spację, program uruchamiający wyświetla tę wartość zamiast
android:shortcutShortLabel
W miarę możliwości ogranicz ten limit do 25 znaków.Więcej informacji:
setLongLabel()
-
android:shortcutDisabledMessage
-
Wiadomość wyświetlana w obsługiwanym programie uruchamiającym, gdy użytkownik próbuje uruchom wyłączony skrót. Komunikat musi zawierać wyjaśnienie, dlaczego skrót jest wyłączony. Wartość tego atrybutu nie ma skutku, jeśli Obecny stan „
android:enabled
”:true
. -
android:enabled
-
Określa, czy użytkownik może użyć skrótu z obsługiwanego Menu z aplikacjami. Wartość domyślna pola
android:enabled
totrue
Jeśli ustawisz wartośćfalse
, ustaw parametrandroid:shortcutDisabledMessage
to wyjaśnienie, wyłączając skrót. Jeśli uważasz, że nie musisz przesyłać takiej wiadomości, całkowicie usuń skrót z pliku XML. -
android:icon
-
bitmapa lub adaptacyjna używanej przez Menu z aplikacjami do wyświetlania skrótu użytkownikowi. Ten może być ścieżką do obrazu lub pliku zasobów zawierającego . W miarę możliwości używaj ikon adaptacyjnych, aby zwiększyć wydajność. i zapewniać spójność.
Skonfiguruj elementy wewnętrzne
Plik XML zawierający listę skrótów statycznych aplikacji obsługuje te
wewnątrz każdego elementu <shortcut>
. Ty
musi zawierać wewnętrzny element intent
dla każdego
statycznego skrótu, zdefiniowanego przez Ciebie.
-
intent
-
Działanie wykonywane przez system, gdy użytkownik wybierze skrót. Ta intencja musi podawać wartość dla funkcji
android:action
.Dla jednego skrótu możesz podać wiele intencji. Zobacz Zarządzaj wielu intencji i działań, Ustaw zamiar,
TaskStackBuilder
w materiałach do zajęć. -
categories
-
Udostępnia grupowanie typów działań dostępnych w aplikacji np. tworzyć nowe wiadomości na czacie.
Listę obsługiwanych kategorii skrótów znajdziesz w
ShortcutInfo
odniesienie do klasy. -
capability-binding
-
Deklaruje zdolność ze skrótem.
W poprzednim przykładzie skrót jest połączony z możliwością zadeklarowaną w przypadku
CREATE_MESSAGE
czyli akcje w aplikacji Google Analytics. To powiązanie umożliwia użytkownikom używanie poleceń głosowych w: do wywoływania skrótu przez Asystenta Google.
Tworzenie skrótów dynamicznych
Skróty dynamiczne zawierają linki do konkretnych, zależnych od kontekstu działań w obrębie do aplikacji. Te działania mogą się zmieniać między używaniem aplikacji a czasem, gdy z niej korzystasz jest uruchomiony. Dynamiczne skróty obejmują dzwonienie do konkretnej osoby, przejście do określonej lokalizacji i wczytanie gry od ostatniego zapisu zapisanego przez użytkownika. . Do otwierania rozmowy możesz też używać dynamicznych skrótów.
ShortcutManagerCompat
Biblioteka Jetpack pomagają
ShortcutManager
API, który umożliwia zarządzanie dynamicznymi skrótami w aplikacji. Korzystanie z
Biblioteka ShortcutManagerCompat
redukuje powtarzalny kod i pomaga
sprawdź, czy skróty działają spójnie we wszystkich wersjach Androida. Ten
Biblioteka jest też niezbędna do przekazywania skrótów dynamicznych, dzięki którym
aby były widoczne w usługach Google, takich jak Asystent,
Biblioteka integracji skrótów Google
Interfejs API ShortcutManagerCompat
umożliwia aplikacji te czynności
operacji za pomocą skrótów dynamicznych:
-
Przekazywanie i aktualizowanie: używanie
pushDynamicShortcut()
aby opublikować i zaktualizować skróty dynamiczne. Jeśli są już dynamiczne lub przypięte skróty o tym samym identyfikatorze, każdy z nich jest aktualizowany. -
Usuń: usuń zestaw dynamicznych skrótów za pomocą polecenia
removeDynamicShortcuts()
Usuń wszystkie skróty dynamiczne korzystające z:removeAllDynamicShortcuts()
Więcej informacji o wykonywaniu operacji na skrótach znajdziesz w sekcji
Zarządzanie skrótami
oraz
ShortcutManagerCompat
odwołania.
Oto przykład tworzenia dynamicznego skrótu i powiązania go z aplikacja:
Kotlin
val shortcut = ShortcutInfoCompat.Builder(context, "id1") .setShortLabel("Website") .setLongLabel("Open the website") .setIcon(IconCompat.createWithResource(context, R.drawable.icon_website)) .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/"))) .build() ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)
Java
ShortcutInfoCompat shortcut = new ShortcutInfoCompat.Builder(context, "id1") .setShortLabel("Website") .setLongLabel("Open the website") .setIcon(IconCompat.createWithResource(context, R.drawable.icon_website)) .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/"))) .build(); ShortcutManagerCompat.pushDynamicShortcut(context, shortcut);
Dodaj bibliotekę integracji skrótów Google
Biblioteka integracji skrótów Google to opcjonalna biblioteka Jetpack. it umożliwia przekazywanie dynamicznych skrótów, które mogą być wyświetlane na platformach Androida, takich jak i platform Google, takich jak Asystent. Korzystanie z tej biblioteki pomaga użytkownikom odkryć skróty umożliwiające szybki dostęp do określonych treści lub ponowne odtworzenie. Działania w aplikacji.
Na przykład aplikacja do obsługi wiadomości może przekazać dynamiczny skrót do kontaktu. o nazwie „Alex” po wysłaniu wiadomości do użytkownika. Po wprowadzeniu skrótu dynamicznego naciska, gdy użytkownik zapyta Asystenta: „OK Google, wyślij wiadomość do Alexa „Przykładowaaplikacja”, Asystent może uruchomić aplikację PrzykładowaAplikacja i je skonfigurować automatycznie. żeby wysłać wiadomość do Olka.
Skróty dynamiczne przekazywane za pomocą tej biblioteki nie podlegają limity skrótów wymuszane dla poszczególnych urządzeń. Dzięki temu aplikacja może nacisnąć skrót za każdym razem, gdy użytkownik wykona powiązane działanie w aplikacji. Przekazuję częste skróty w ten sposób pozwala Google zrozumieć wzorce korzystania przez użytkowników i sugerować kontekst odpowiednie skróty.
Na przykład Asystent może uczyć się na skrótach przekazanych aplikacja do monitorowania aktywności fizycznej, którą użytkownik zwykle uruchamia codziennie rano i aktywnie Zaproponuj „Rozpocznij bieg” jako skrót, gdy użytkownik bierze telefon rano.
W bibliotece integracji skrótów Google nie ma żadnych adresów,
o samej funkcjonalności. Dodanie tej biblioteki do aplikacji pozwala usługom Google
w skrótach przekazywanych przez aplikację za pomocą funkcji ShortcutManagerCompat
.
Aby korzystać z tej biblioteki w swojej aplikacji, wykonaj te czynności:
-
Zaktualizuj plik
gradle.properties
, aby zapewnić wsparcie Biblioteki AndroidaX:android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true
-
W narzędziu
app/build.gradle
dodaj zależności Google Ads Biblioteka integracji skrótów iShortcutManagerCompat
:dependencies { implementation "androidx.core:core:1.6.0" implementation 'androidx.core:core-google-shortcuts:1.0.0' ... }
Gdy do projektu Androida zostaną dodane zależności bibliotek, aplikacja może używać:
metodę pushDynamicShortcut()
z
ShortcutManagerCompat
, aby przekazać odpowiednie skróty dynamiczne
do wyświetlania w programie uruchamiającym i na innych platformach Google.
Utwórz przypięte skróty
W Androidzie 8.0 (poziom interfejsu API 26) i nowszych możesz tworzyć przypięte skróty. W przeciwieństwie do skrótów statycznych i dynamicznych, przypięte skróty są wyświetlane w obsługiwanych programów uruchamiających jako osobnych ikon. Rysunek 1 ukazuje różnice między nimi różnych typów skrótów.
Aby przypiąć skrót do obsługiwanego programu uruchamiającego, używając aplikacji, dokończ następujące kroki:
-
Używaj
isRequestPinShortcutSupported()
aby sprawdzić, czy domyślny program uruchamiający na urządzeniu obsługuje przypinanie w aplikacji skrótów. -
Utwórz obiekt
ShortcutInfo
na jeden z 2 sposobów, w zależności od tego, o tym, czy skrót istnieje:-
Jeśli skrót istnieje, utwórz obiekt
ShortcutInfo
, który zawiera tylko identyfikator istniejącego skrótu. System znajduje i przypina wszystkie inne informacje powiązane ze skrótem. -
Jeśli przypinasz nowy skrót, utwórz
ShortcutInfo
, który zawiera identyfikator, intencję i krótką etykietę nowego obiektu. skrótu.
-
Jeśli skrót istnieje, utwórz obiekt
-
Zadzwoń, by przypiąć skrót do programu uruchamiającego na urządzeniu
requestPinShortcut()
W trakcie tego procesu możesz przesłaćPendingIntent
który powiadamia aplikację tylko wtedy, gdy skrót zostanie przypięty. .Po przypięciu skrótu aplikacja może aktualizować jego zawartość za pomocą
updateShortcuts()
. Więcej informacji: Zaktualizuj .
Fragment kodu poniżej pokazuje, jak utworzyć przypięty skrót.
Kotlin
val shortcutManager = getSystemService(ShortcutManager::class.java) if (shortcutManager!!.isRequestPinShortcutSupported) { // Enable the existing shortcut with the ID "my-shortcut". val pinShortcutInfo = ShortcutInfo.Builder(context, "my-shortcut").build() // Create the PendingIntent object only if your app needs to be notified // that the user let the shortcut be pinned. If the pinning operation fails, // your app isn't notified. Assume here that the app implements a method // called createShortcutResultIntent() that returns a broadcast intent. val pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(pinShortcutInfo) // Configure the intent so that your app's broadcast receiver gets the // callback successfully. For details, see PendingIntent.getBroadcast(). val successCallback = PendingIntent.getBroadcast(context, /* request code */ 0, pinnedShortcutCallbackIntent, /* flags */ 0) shortcutManager.requestPinShortcut(pinShortcutInfo, successCallback.intentSender) }
Java
ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class); if (shortcutManager.isRequestPinShortcutSupported()) { // Enable the existing shortcut with the ID "my-shortcut". ShortcutInfo pinShortcutInfo = new ShortcutInfo.Builder(context, "my-shortcut").build(); // Create the PendingIntent object only if your app needs to be notified // that the user let the shortcut be pinned. If the pinning operation fails, // your app isn't notified. Assume here that the app implements a method // called createShortcutResultIntent() that returns a broadcast intent. Intent pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(pinShortcutInfo); // Configure the intent so that your app's broadcast receiver gets the // callback successfully. For details, see PendingIntent.getBroadcast(). PendingIntent successCallback = PendingIntent.getBroadcast(context, /* request code */ 0, pinnedShortcutCallbackIntent, /* flags */ 0); shortcutManager.requestPinShortcut(pinShortcutInfo, successCallback.getIntentSender()); }
Tworzenie niestandardowych skrótów
![Obraz przedstawiający działanie w oknie niestandardowym z prośbą „Do”
Chcesz dodać ikonę programu uruchamiającego Gmaila do ekranu głównego? Niestandardowy
opcje to „Nie, dziękuję”. i „Dodaj ikonę”.](https://developer.android.com/static/images/guide/topics/ui/shortcuts/pinned-shortcuts-dialog.png?authuser=9&hl=pl)
Możesz też utworzyć specjalistyczne działanie, które pomoże użytkownikom tworzyć skróty, wraz z opcjami niestandardowymi i przyciskiem potwierdzenia. Rysunek 2 pokazuje przykład tego rodzaju aktywności w aplikacji Gmail.
W pliku manifestu aplikacji dodaj
ACTION_CREATE_SHORTCUT
sekcji aktywności
<intent-filter>
. Ta deklaracja konfiguruje następujące zachowanie, gdy użytkownik będzie próbował
aby utworzyć skrót:
- System rozpocznie wyspecjalizowaną aktywność aplikacji.
- Użytkownik ustawia opcje skrótu.
- Użytkownik klika przycisk potwierdzenia.
-
Aplikacja utworzy skrót za pomocą
createShortcutResultIntent()
. Ta metoda zwraca błądIntent
, w którym aplikacja przekazuje informacje o wykonanym wcześniej działaniu za pomocąsetResult()
-
Połączenia z aplikacji
finish()
na podstawie aktywności użytej do utworzenia spersonalizowanego skrótu.
Podobnie aplikacja może prosić użytkowników o dodanie przypiętych skrótów do ekranu głównego ekranu po zainstalowaniu lub pierwszym uruchomieniu aplikacji. Ta metoda jest jest skuteczne, ponieważ pomaga użytkownikom utworzyć skrót w ich w zwykły sposób.
Skróty testowe
Aby przetestować skróty do aplikacji, zainstaluj ją na urządzeniu z programem uruchamiającym który obsługuje skróty. Następnie wykonaj te czynności:
- Dotykowe przytrzymaj ikonę Menu z aplikacjami, by wyświetlić zdefiniowane przez siebie skróty dla Twojej aplikacji.
- Przeciągnij skrót, aby przypiąć go do programu uruchamiającego urządzenia.