Membuat pintasan

Pintasan menayangkan jenis konten tertentu kepada pengguna dengan membantu mereka mengakses bagian-bagian aplikasi dengan cepat.

Gambar yang menunjukkan kontras antara pintasan aplikasi dan pintasan yang disematkan
Gambar 1. Pintasan aplikasi dan pintasan yang disematkan.

Cara Anda menayangkan konten dengan pintasan bergantung pada kasus penggunaan Anda dan apakah konteks pintasan dikendalikan aplikasi atau pengguna. Meskipun model konteks pintasan tidak berubah dan konteks pintasan dinamis terus-menerus perubahan, aplikasi Anda akan mengarahkan konteks di kedua kasus tersebut. Dalam kasus di mana pengguna memilih cara aplikasi menayangkan konten kepada pengguna, misalnya dengan pintasan yang disematkan, konteks ditentukan oleh pengguna. Skenario berikut menjelaskan beberapa penggunaan yang berbeda untuk setiap jenis pintasan:

  • Statis pintasan paling cocok untuk aplikasi yang menautkan ke konten menggunakan sepanjang waktu interaksi pengguna dengan aplikasi. Karena sebagian besar peluncur hanya menampilkan empat pintasan sekaligus, pintasan statis berguna untuk menjalankan rutinitas tugas dengan cara yang konsisten, seperti jika pengguna ingin melihat kalender mereka atau email dengan cara tertentu .
  • Dinamis pintasan digunakan untuk tindakan dalam aplikasi yang sensitif terhadap konteks. Pintasan yang sensitif terhadap konteks disesuaikan dengan tindakan yang dilakukan pengguna dalam sebuah aplikasi. Misalnya, jika Anda membuat game yang memungkinkan pengguna memulai dari level saat ini saat peluncuran, Anda perlu memperbarui pintasan. Menggunakan pintasan dinamis memungkinkan Anda memperbarui pintasan setiap kali pengguna menyelesaikan level.
  • Disematkan pintasan digunakan untuk tindakan tertentu yang dipicu pengguna. Misalnya, pengguna mungkin ingin menyematkan situs web tertentu ke peluncur. Ini adalah bermanfaat karena memungkinkan pengguna melakukan tindakan khusus—seperti membuka situs dalam satu langkah, lebih cepat daripada menggunakan di instance browser.

Membuat pintasan statis

Pintasan statis memberikan link ke tindakan umum dalam aplikasi Anda, dan pintasan ini tindakan harus tetap konsisten selama masa pakai versi aplikasi saat ini. Opsi yang baik untuk pintasan statis termasuk melihat pesan terkirim, menyetel alarm, dan menampilkan aktivitas olahraga pengguna pada hari itu.

Untuk membuat pintasan statis, lakukan hal berikut:

  1. Di file AndroidManifest.xml aplikasi Anda, cari aktivitas yang filter intent diatur ke android.intent.action.MAIN tindakan dan android.intent.category.LAUNCHER kategori.

  2. Tambahkan <meta-data> ke aktivitas ini yang mereferensikan file sumber daya tempat aplikasi menentukan pintasan:

      <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. Buat file resource baru bernama res/xml/shortcuts.xml.

  4. Di file resource baru, tambahkan elemen root <shortcuts> yang berisi daftar elemen <shortcut>. Dalam setiap Elemen <shortcut>, menyertakan informasi tentang elemen termasuk ikon, label deskripsi, dan intent yang diluncurkan dalam aplikasi:

      <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>
      

Menyesuaikan nilai atribut

Daftar berikut mencakup deskripsi untuk berbagai atribut dalam pintasan statis. Berikan nilai untuk android:shortcutId dan android:shortcutShortLabel. Semua nilai lain bersifat opsional.

android:shortcutId

Literal string yang mewakili pintasan ketika sebuah ShortcutManager menjalankan operasi pada objek tersebut.

android:shortcutShortLabel

Frasa singkat yang menjelaskan tujuan pintasan. Jika memungkinkan, membatasi deskripsi singkat ini hingga 10 karakter.

Untuk informasi selengkapnya, lihat setShortLabel().

android:shortcutLongLabel

Frasa lebih panjang yang menjelaskan tujuan pintasan. Jika terdapat cukup spasi, peluncur akan menampilkan nilai ini, bukan android:shortcutShortLabel. Jika memungkinkan, batasi durasi ini deskripsi maksimum 25 karakter.

Untuk informasi selengkapnya, lihat setLongLabel().

android:shortcutDisabledMessage

Pesan yang muncul di peluncur yang didukung saat pengguna mencoba meluncurkan pintasan yang dinonaktifkan. Pesan tersebut harus menjelaskan kepada pengguna mengapa dinonaktifkan. Nilai atribut ini tidak berpengaruh jika android:enabled adalah true.

android:enabled

Menentukan apakah pengguna dapat berinteraksi dengan pintasan dari pintasan yang didukung peluncur. Nilai default android:enabled adalah true. Jika Anda menetapkannya ke false, setel android:shortcutDisabledMessage yang menjelaskan mengapa Anda menonaktifkan pintasan. Jika Anda merasa tidak perlu memberikan pesan semacam itu, menghapus pintasan dari file XML secara keseluruhan.

android:icon

bitmap atau adaptif ikon yang digunakan peluncur saat menampilkan pintasan kepada pengguna. Ini dapat berupa jalur ke gambar atau file resource yang berisi gambar. Gunakan ikon adaptif bila memungkinkan untuk meningkatkan performa dan konsistensi.

Mengonfigurasikan elemen internal

File XML yang mencantumkan pintasan statis aplikasi mendukung hal berikut di dalam setiap elemen <shortcut>. Anda harus menyertakan elemen dalam intent untuk masing-masing pintasan statis yang Anda tentukan.

intent

Tindakan yang akan diluncurkan sistem saat pengguna memilih pintasan. Intent ini harus memberikan nilai untuk android:action .

Anda dapat memberikan beberapa intent untuk satu pintasan. Lihat Kelola beberapa intent dan aktivitas, Setel intent, dan TaskStackBuilder referensi kelas untuk detailnya.

categories

Menyediakan pengelompokan untuk jenis tindakan yang merupakan pintasan aplikasi Anda dilakukan, seperti membuat pesan chat baru.

Untuk daftar kategori pintasan yang didukung, lihat ShortcutInfo Google Analytics 4.

capability-binding

Mendeklarasikan kemampuan yang ditautkan dengan pintasan.

Pada contoh sebelumnya, pintasan ditautkan ke kemampuan yang dideklarasikan untuk CREATE_MESSAGE, yang merupakan Action Aplikasi intent bawaan. Dengan pengikatan kemampuan ini, pengguna dapat menggunakan perintah lisan dengan Asisten Google untuk memanggil pintasan.

Membuat pintasan dinamis

Pintasan dinamis menyediakan link ke tindakan spesifik yang sensitif terhadap konteks di dalam aplikasi Anda. Tindakan ini dapat berubah antara penggunaan aplikasi dan saat aplikasi Anda sedang berjalan. Penggunaan pintasan dinamis yang baik antara lain menelepon orang tertentu, menavigasi ke lokasi tertentu, dan memuat game dari penyimpanan terakhir pengguna poin. Anda juga dapat menggunakan pintasan dinamis untuk membuka percakapan.

Tujuan ShortcutManagerCompat Library Jetpack adalah bantuan untuk ShortcutManager API, yang memungkinkan Anda mengelola pintasan dinamis di aplikasi. Menggunakan Library ShortcutManagerCompat mengurangi kode boilerplate dan membantu memastikan pintasan Anda berfungsi secara konsisten di seluruh versi Android. Ini library juga diperlukan untuk mendorong pintasan dinamis sehingga memenuhi syarat agar muncul di platform Google—seperti Asisten—dengan Library Integrasi Pintasan Google.

API ShortcutManagerCompat memungkinkan aplikasi Anda melakukan hal berikut operasi dengan pintasan dinamis:

  • Push dan update: gunakan pushDynamicShortcut() untuk memublikasikan dan memperbarui pintasan dinamis Anda. Jika sudah ada profil atau pintasan yang disematkan dengan ID yang sama, setiap pintasan yang dapat diubah akan diperbarui.
  • Menghapus: menghapus sekumpulan pintasan dinamis menggunakan removeDynamicShortcuts(). Hapus semua pintasan dinamis menggunakan removeAllDynamicShortcuts().

Untuk informasi selengkapnya tentang menjalankan operasi pada pintasan, lihat Mengelola pintasan dan ShortcutManagerCompat alamat IP internal.

Berikut adalah contoh cara membuat pintasan dinamis dan mengaitkannya dengan aplikasi:

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);

Menambahkan Library Integrasi Pintasan Google

Library Integrasi Pintasan Google adalah library Jetpack opsional. Ini memungkinkan Anda mendorong pintasan dinamis yang dapat ditampilkan di platform Android, seperti seperti peluncur, dan platform Google, seperti Asisten. Menggunakan library ini membantu pengguna menemukan pintasan Anda untuk mengakses konten tertentu atau memutar ulang dengan cepat dalam aplikasi Anda.

Misalnya, aplikasi pesan mungkin mendorong pintasan dinamis untuk kontak bernama "Alex" setelah pengguna mengirim pesan ke orang tersebut. Setelah pintasan dinamis adalah didorong, jika pengguna bertanya kepada Asisten, "Ok Google, kirim pesan ke Alex di ExampleApp", Asisten dapat meluncurkan ExampleApp dan mengonfigurasinya secara otomatis untuk mengirim pesan ke Alex.

Pintasan dinamis yang didorong dengan library ini tidak tunduk kepada batas pintasan diterapkan per perangkat. Hal ini memungkinkan aplikasi Anda mendorong pintasan setiap kali pengguna menyelesaikan tindakan terkait di aplikasi Anda. Menerapkan pintasan yang sering memungkinkan Google memahami pola penggunaan pengguna Anda dan menyarankan secara kontekstual pintasan yang relevan untuk mereka.

Misalnya, Asisten dapat belajar dari pintasan yang didorong dari aplikasi pemantau kebugaran yang biasanya dijalankan pengguna setiap pagi dan secara proaktif sarankan "mulai lari" ketika pengguna mengangkat ponselnya di pagi.

Library Integrasi Pintasan Google tidak menawarkan jenis alamat fungsionalitas itu sendiri. Menambahkan library ini ke aplikasi Anda memungkinkan platform Google mengambil di pintasan yang didorong aplikasi Anda menggunakan ShortcutManagerCompat.

Untuk menggunakan library ini di aplikasi Anda, ikuti langkah-langkah berikut:

  1. Perbarui file gradle.properties Anda ke dukungan Library AndroidX:

          
          android.useAndroidX=true
          # Automatically convert third-party libraries to use AndroidX
          android.enableJetifier=true
          
          
  2. Di app/build.gradle, tambahkan dependensi untuk paket Google Library Integrasi Pintasan dan ShortcutManagerCompat:

          
          dependencies {
            implementation "androidx.core:core:1.6.0"
            implementation 'androidx.core:core-google-shortcuts:1.0.0'
            ...
          }
          
          

Dengan dependensi library yang ditambahkan ke project Android, aplikasi Anda dapat menggunakan metode pushDynamicShortcut() dari ShortcutManagerCompat untuk mengirim pintasan dinamis yang memenuhi syarat untuk ditampilkan di peluncur dan platform Google yang berpartisipasi.

Membuat pintasan yang dipasangi pin

Di Android 8.0 (API level 26) dan yang lebih tinggi, Anda dapat membuat pintasan yang dipasangi pin. Tidak seperti pintasan statis dan dinamis, pintasan tersemat muncul di bagian peluncur sebagai ikon terpisah. Gambar 1 menunjukkan perbedaan antara keduanya jenis-jenis pintasan.

Untuk menyematkan pintasan ke peluncur yang didukung menggunakan aplikasi Anda, selesaikan langkah-langkah berikut:

  1. Gunakan isRequestPinShortcutSupported() untuk memverifikasi bahwa peluncur default perangkat mendukung penyematan dalam aplikasi pintasan.
  2. Buat objek ShortcutInfo dengan salah satu dari dua cara, bergantung pada untuk mengetahui apakah pintasan tersebut ada:

    1. Jika pintasan ada, buat objek ShortcutInfo yang hanya berisi ID pintasan yang sudah ada. Sistem menemukan dan menyematkan semua informasi lain yang terkait dengan {i>shortcut<i} secara otomatis.
    2. Jika Anda memasang pin pada pintasan baru, buat ShortcutInfo yang berisi ID, intent, dan label singkat untuk {i>shortcut<i}.
  3. Sematkan pintasan ke peluncur perangkat dengan memanggil requestPinShortcut(). Selama proses ini, Anda bisa meneruskan sebuah PendingIntent , yang akan memberi tahu aplikasi Anda hanya jika pintasan memulai proyek.

    Setelah pintasan disematkan, aplikasi Anda dapat memperbarui kontennya menggunakan updateShortcuts() . Untuk informasi selengkapnya, baca Perbarui pintasan.

Cuplikan kode berikut menunjukkan cara membuat pintasan yang disematkan.

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());
}

Membuat aktivitas pintasan kustom

Gambar yang menunjukkan aktivitas dialog kustom yang menampilkan prompt &#39;Do
  Anda ingin menambahkan ikon peluncur Gmail ke layar utama?&#39; Kustom
  opsinya adalah &#39;Lain kali&#39; dan &quot;Add icon&quot;.
Gambar 2. Contoh aktivitas dialog pintasan aplikasi kustom.

Anda juga dapat membuat aktivitas khusus yang membantu pengguna membuat pintasan, lengkap dengan opsi khusus dan tombol konfirmasi. Gambar 2 menunjukkan contoh aktivitas jenis ini di aplikasi Gmail.

Di file manifes aplikasi, tambahkan ACTION_CREATE_SHORTCUT ke aktivitas <intent-filter> . Deklarasi ini menyiapkan perilaku berikut saat pengguna mencoba untuk membuat pintasan:

  1. Sistem memulai aktivitas khusus aplikasi Anda.
  2. Pengguna menetapkan opsi untuk pintasan tersebut.
  3. Pengguna memilih tombol konfirmasi.
  4. Aplikasi Anda membuat pintasan menggunakan createShortcutResultIntent() . Metode ini mengembalikan sebuah item Intent, yang aplikasi Anda akan menyampaikan kembali aktivitas yang dijalankan sebelumnya menggunakan setResult().
  5. Panggilan aplikasi Anda finish() pada aktivitas yang digunakan untuk membuat pintasan yang disesuaikan.

Demikian pula, aplikasi Anda dapat meminta pengguna untuk menambahkan pintasan yang disematkan ke rumah layar setelah instalasi atau saat pertama kali aplikasi diluncurkan. Metode ini adalah efektif karena membantu pengguna membuat {i>shortcut<i} sebagai bagian dari alur kerja biasa.

Menguji pintasan

Untuk menguji pintasan aplikasi Anda, instal aplikasi di perangkat dengan peluncur yang mendukung pintasan. Kemudian, jalankan beberapa tindakan berikut:

  • Sentuh & tahan ikon peluncur aplikasi Anda untuk melihat pintasan yang Anda tentukan untuk aplikasi Anda.
  • Tarik pintasan untuk menyematkannya ke peluncur perangkat.