Utwórz skróty

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
Rysunek 1. Skróty do aplikacji i przypięte skróty.

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:

  1. W pliku AndroidManifest.xml aplikacji znajdź aktywność, której filtry intencji są ustawione na android.intent.action.MAIN działania oraz android.intent.category.LAUNCHER .

  2. 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>
      
  3. Utwórz nowy plik zasobów o nazwie res/xml/shortcuts.xml.

  4. 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 to true Jeśli ustawisz wartość false, ustaw parametr android: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:

  1. Zaktualizuj plik gradle.properties, aby zapewnić wsparcie Biblioteki AndroidaX:

          
          android.useAndroidX=true
          # Automatically convert third-party libraries to use AndroidX
          android.enableJetifier=true
          
          
  2. W narzędziu app/build.gradle dodaj zależności Google Ads Biblioteka integracji skrótów i ShortcutManagerCompat:

          
          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:

  1. Używaj isRequestPinShortcutSupported() aby sprawdzić, czy domyślny program uruchamiający na urządzeniu obsługuje przypinanie w aplikacji skrótów.
  2. Utwórz obiekt ShortcutInfo na jeden z 2 sposobów, w zależności od tego, o tym, czy skrót istnieje:

    1. 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.
    2. Jeśli przypinasz nowy skrót, utwórz ShortcutInfo , który zawiera identyfikator, intencję i krótką etykietę nowego obiektu. skrótu.
    .
  3. 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ę”.
Rysunek 2. Przykład spersonalizowanej aktywności w oknie ze skrótami do aplikacji.

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:

  1. System rozpocznie wyspecjalizowaną aktywność aplikacji.
  2. Użytkownik ustawia opcje skrótu.
  3. Użytkownik klika przycisk potwierdzenia.
  4. Aplikacja utworzy skrót za pomocą createShortcutResultIntent() . Ta metoda zwraca błąd Intent, w którym aplikacja przekazuje informacje o wykonanym wcześniej działaniu za pomocą setResult()
  5. 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.