Setelah membuat pintasan, Anda mungkin perlu mengelolanya selama masa aktif aplikasi Anda. Misalnya, Anda mungkin ingin mengoptimalkan aplikasi dengan menentukan seberapa sering pengguna menyelesaikan tindakan tertentu dengan pintasan Anda. Pada kasus lain, Anda mungkin ingin menonaktifkan pintasan yang dipasangi pin agar aplikasi tidak melakukan tindakan yang sudah tidak berlaku atau tidak ada. Panduan ini menjelaskan cara ini dan beberapa cara umum lainnya untuk mengelola pintasan Anda.
Perilaku pintasan
Bagian berikut berisi informasi umum tentang perilaku pintasan, mencakup visibilitas, urutan tampilan, dan peringkat.
Visibilitas pintasan
Catatan keamanan penting: Semua informasi pintasan disimpan di penyimpanan yang dienkripsi dengan kredensial, sehingga aplikasi Anda tidak dapat mengakses pintasan pengguna sampai mereka membuka kunci perangkat.
Pintasan statis dan dinamis muncul pada peluncur atau asisten yang didukung saat pengguna menjalankan gestur atau perintah suara tertentu. Pada peluncur yang didukung, gestur yang tersedia adalah tekan lama pada ikon peluncur aplikasi, tetapi gestur aslinya mungkin berbeda pada aplikasi peluncur lainnya. Dengan Asisten Google, pintasan dapat ditampilkan dalam Asisten atau suara yang diluncurkan dari perintah pengguna.
Class
LauncherApps
menyediakan API untuk aplikasi peluncur agar dapat mengakses pintasan.
Karena pintasan yang dipasangi pin muncul di peluncur tersebut, pintasan itu selalu terlihat. Pintasan yang dipasangi pin akan dihapus dari peluncur hanya dalam situasi berikut:
- Pengguna menghapusnya.
- Aplikasi yang dikaitkan dengan pintasan tersebut di-uninstal.
- Pengguna menghapus data aplikasi dengan membuka Setelan > Aplikasi & notifikasi, memilih aplikasi, lalu memilih Penyimpanan > Hapus penyimpanan.
Urutan tampilan pintasan
Saat peluncur menampilkan pintasan aplikasi, pintasan akan muncul dalam urutan berikut:
-
Pintasan statis: Pintasan yang
metode
isDeclaredInManifest()
-nya menampilkantrue
. -
Pintasan dinamis: Pintasan yang
metode
ShortcutInfo.isDynamic()
-nya menampilkantrue
.
Dalam setiap jenis pintasan (statis dan dinamis), pintasan diurutkan dalam urutan peringkat
dari bawah ke atas sesuai dengan
ShortcutInfo.getRank()
. Asisten Google juga mempertimbangkan peringkat pintasan saat menentukan
pintasan kontekstual untuk ditampilkan kepada pengguna.
Peringkat adalah bilangan bulat non-negatif yang berurutan. Anda dapat memperbarui peringkat pintasan yang ada saat
memanggil
updateShortcuts(Context, List)
,
addDynamicShortcuts(Context, List)
,
atau
setDynamicShortcuts(Context, List)
.
Catatan: Peringkat otomatis disesuaikan, sehingga bersifat unik untuk setiap jenis pintasan (statis atau dinamis). Misalnya, jika terdapat tiga pintasan dinamis dengan peringkat 0, 1, dan 2, menambahkan pintasan dinamis lainnya dengan peringkat 1 berarti membuat permintaan untuk menempatkan pintasan ini di urutan kedua. Hasilnya, pintasan ketiga dan keempat mendekati bagian bawah daftar pintasan, dengan peringkat yang diubah menjadi 2 dan 3 secara berurutan.
Mengelola beberapa intent dan aktivitas
Jika ingin aplikasi menjalankan beberapa operasi saat pengguna mengaktifkan pintasan, Anda dapat mengonfigurasinya untuk memicu runtunan aktivitas. Anda dapat melakukannya dengan menetapkan beberapa intent, memulai suatu aktivitas dari aktivitas lainnya, atau menetapkan flag intent, bergantung pada jenis pintasan.
Menetapkan beberapa intent
Saat membuat pintasan dengan
ShortcutInfoCompat.Builder
,
Anda dapat menggunakan
setIntents()
, sebagai ganti
setIntent()
. Dengan memanggil setIntents()
, Anda dapat meluncurkan beberapa
aktivitas dalam aplikasi saat pengguna memilih pintasan, menempatkan semua kecuali
aktivitas terakhir dalam daftar di
data sebelumnya. Jika pengguna kemudian memutuskan untuk
menekan tombol kembali di perangkat, mereka akan melihat aktivitas lain di aplikasi Anda, bukan kembali
ke peluncur perangkat.
Catatan: Saat pengguna memilih pintasan lalu menekan tombol kembali, aplikasi Anda akan meluncurkan aktivitas yang sesuai dengan intent second-to-last pintasan yang tercantum dalam file resource. Pola perilaku ini berlanjut setelah penekanan berulang tombol kembali, sampai pengguna menghapus data sebelumnya yang dibuat pintasan. Saat pengguna menekan tombol kembali untuk kedua kalinya, sistem akan mengarahkan mereka kembali ke peluncur.
Memulai suatu aktivitas dari aktivitas lainnya
Pintasan statis tidak boleh memiliki flag intent kustom.
Intent pertama dari pintasan statis akan selalu memiliki
Intent.FLAG_ACTIVITY_NEW_TASK
dan
Intent.FLAG_ACTIVITY_CLEAR_TASK
yang telah ditetapkan. Artinya, saat aplikasi sudah berjalan,
semua aktivitas yang ada di
aplikasi Anda akan dihentikan saat pintasan statis diluncurkan. Jika perilaku ini tidak diinginkan, Anda dapat
menggunakan aktivitas trampoline, atau aktivitas tak terlihat yang memulai aktivitas lain di
Activity.onCreate(Bundle)
, lalu memanggil
Activity.finish()
:
- Dalam file
AndroidManifest.xml
, aktivitas trampoline harus menyertakan penerapan atributandroid:taskAffinity=""
. - Dalam file resource pintasan, intent dalam pintasan statis harus merujuk pada aktivitas trampoline.
Untuk informasi selengkapnya tentang aktivitas trampoline, baca Memulai suatu aktivitas dari aktivitas lain.
Menetapkan flag intent
Pintasan dinamis dapat dipublikasikan dengan sekumpulan
flag Intent
.
Sebaiknya, tentukan
Intent.FLAG_ACTIVITY_CLEAR_TASK
bersama dengan flag Anda yang lainnya.
Jika tidak, apabila Anda mencoba memulai tugas lain saat aplikasi berjalan,
aktivitas target mungkin tidak muncul.
Untuk mempelajari tugas dan flag intent lebih lanjut, baca panduan tugas dan data sebelumnya.
Memperbarui pintasan
Setiap ikon peluncur aplikasi dapat berisi maksimal
jumlah
getMaxShortcutCountPerActivity()
pintasan statis dan dinamis yang digabungkan.
Tidak ada batasan untuk jumlah pintasan yang dipasangi pin yang dapat dibuat oleh aplikasi.
Saat pintasan dinamis dipasangi pin, pintasan yang dipasangi pin masih terlihat dan dapat diluncurkan,
bahkan saat penayang menghapusnya sebagai pintasan dinamis. Hal ini memungkinkan aplikasi memiliki lebih dari
jumlah getMaxShortcutCountPerActivity()
pintasan.
Misalnya, anggaplah
getMaxShortcutCountPerActivity()
adalah empat:
- Aplikasi chat memublikasikan empat pintasan dinamis yang merepresentasikan empat percakapan terbaru (c1, c2, c3, c4).
- Pengguna memasang pin pada keempat pintasan tersebut.
-
Kemudian, pengguna telah memulai tiga percakapan tambahan (c5, c6, dan c7), sehingga aplikasi penayang memublikasikan ulang pintasan dinamisnya. Daftar pintasan dinamis barunya menjadi: c4, c5, c6, c7.
Aplikasi harus menghapus c1, c2, dan c3, karena tidak dapat menampilkan lebih dari empat pintasan dinamis. Namun, c1, c2, dan c3 tetap merupakan pintasan yang dipasangi pin yang dapat diakses dan diluncurkan pengguna.
Pengguna sekarang dapat mengakses total tujuh pintasan yang tertaut ke aktivitas pada aplikasi penayang. Ini karena totalnya mencakup jumlah maksimum pintasan dan tiga pintasan yang dipasangi pin.
- Aplikasi dapat menggunakan
updateShortcuts(Context, List)
untuk memperbarui semua pintasan dari tujuh pintasan yang ada. Misalnya, Anda dapat memperbarui kumpulan pintasan ini saat ikon chat pasangannya telah diubah. - Metode
addDynamicShortcuts(Context, List)
dansetDynamicShortcuts(Context, List)
juga dapat digunakan untuk memperbarui pintasan yang ada dengan ID yang sama. Namun, metode tersebut tidak dapat digunakan untuk memperbarui pintasan non-dinamis yang dipasangi pin, karena kedua metode tersebut mencoba mengubah daftar pintasan yang diberikan menjadi pintasan dinamis.
Tidak ada batasan jumlah pintasan yang dapat dikirim untuk ditampilkan di aplikasi asisten, misalnya Asisten Google. Gunakan metode pushDynamicShortcut() library Jetpack ShortcutManagerCompat untuk membuat dan mengupdate pintasan untuk digunakan di aplikasi asisten. Selain itu tambahkan library Integrasi Pintasan Google juga harus ditambahkan ke aplikasi Anda agar link dinamis memenuhi syarat untuk muncul di Asisten Google.
Untuk mempelajari lebih lanjut panduan pintasan aplikasi kami yang meliputi cara memperbarui pintasan, baca Praktik terbaik.
Menangani perubahan lokal sistem
Aplikasi akan memperbarui pintasan dinamis dan yang dipasangi pin saat menerima
siaran
Intent.ACTION_LOCALE_CHANGED
, yang menunjukkan bahwa lokal sistem telah diubah.
Melacak penggunaan pintasan
Untuk menentukan situasi di mana pintasan statis dan dinamis akan muncul, peluncur
memeriksa histori pengaktifan pintasan. Untuk pintasan statis, Anda dapat terus melacak kapan
pengguna menyelesaikan tindakan tertentu dalam aplikasi Anda dengan memanggil metode
reportShortcutUsed()
dan meneruskan ID pintasan kepadanya, saat
salah satu dari peristiwa berikut terjadi:
- Pengguna memilih pintasan dengan ID yang diberikan.
- Dalam aplikasi, pengguna menyelesaikan tindakan yang berkaitan dengan pintasan yang sama secara manual.
Aplikasi Anda melacak penggunaan pintasan dinamis dengan memanggil
metode
pushDynamicShortcut()
dan meneruskan ID pintasan saat peristiwa yang relevan terjadi. Mendorong penggunaan
pintasan dinamis dengan metode ini memungkinkan aplikasi asisten seperti Asisten Google menyarankan
pintasan yang relevan kepada pengguna. Karena metode
pushDynamicShortcut()
melaporkan penggunaan saat dipanggil, Anda juga tidak boleh memanggil metode
reportShortcutUsed()
untuk pintasan yang sama.
Catatan: Library Integrasi Pintasan Google diperlukan untuk mengaktifkan link dinamis yang didorong aplikasi agar memenuhi syarat untuk muncul di platform Google seperti Asisten Google. Dengan menambahkan library ini ke aplikasi, Anda mengizinkan Asisten menyerap link dinamis dan menyarankannya kepada pengguna dari aplikasi Asisten.
Menonaktifkan pintasan
Karena aplikasi Anda dan penggunanya dapat memasang pin pintasan ke peluncur perangkat, pintasan yang dipasangi pin ini
bisa saja mengarahkan pengguna ke tindakan aplikasi Anda yang tidak berlaku lagi atau
sudah tidak ada. Untuk menangani situasi ini, Anda dapat menonaktifkan pintasan yang tidak Anda izinkan untuk
dipilih pengguna dengan memanggil
disableShortcuts()
, yang menghapus pintasan tertentu dari daftar pintasan
statis dan dinamis serta menonaktifkan semua salinan pintasan yang dipasangi pin ini. Anda juga dapat menggunakan
versi muatan berlebih dari metode ini, yang menerima
CharSequence
sebagai pesan error
kustom. Pesan error tersebut akan muncul saat pengguna mencoba meluncurkan setiap pintasan yang dinonaktifkan.
Catatan: Jika Anda menghapus beberapa pintasan statis aplikasi saat mengupdate aplikasi, sistem akan otomatis menonaktifkan pintasan tersebut.
Pembatasan Kapasitas
Saat menggunakan metode
setDynamicShortcuts()
,
addDynamicShortcuts()
, atau
updateShortcuts()
, perhatikan bahwa Anda mungkin hanya dapat memanggil metode
ini beberapa kali di aplikasi latar belakang, aplikasi yang tidak memiliki aktivitas, atau
aplikasi yang layanannya sedang berada di latar depan. Batas jumlah waktu di mana Anda dapat memanggil
metode ini disebut pembatasan kapasitas. Fitur ini digunakan untuk mencegah
ShortcutManagerCompat
menggunakan resource perangkat secara berlebihan.
Saat pembatasan kapasitas diaktifkan,
isRateLimitingActive()
menampilkan true. Namun, pembatasan kapasitas akan direset selama peristiwa
tertentu, sehingga aplikasi latar belakang dapat memanggil metode ShortcutManager
sampai batas kapasitas tercapai lagi. Peristiwa ini mencakup:
- Aplikasi muncul di latar depan.
- Perubahan lokal sistem.
- Pengguna melakukan tindakan balasan inline pada notifikasi.
Jika mendapati pembatasan kapasitas selama pengembangan atau pengujian, Anda dapat memilih
Opsi Developer > Reset pembatasan kapasitas ShortcutManager dari
setelan perangkat, atau Anda dapat memasukkan perintah
berikut di adb
:
$ adb shell cmd shortcut reset-throttling [ --user your-user-id ]
Pencadangan dan pemulihan
Anda dapat mengizinkan pengguna untuk melakukan operasi pencadangan dan pemulihan pada aplikasi Anda saat mengganti perangkat
dengan menyertakan penerapan atribut
android:allowBackup="true"
di file manifes aplikasi Anda.
Jika Anda mengizinkan pencadangan dan pemulihan, perhatikan hal berikut tentang pintasan aplikasi:
- Pintasan statis otomatis dipublikasikan ulang, tetapi hanya setelah pengguna menginstal ulang aplikasi Anda di perangkat barunya.
- Pintasan dinamis tidak dicadangkan, jadi Anda harus menyertakan logika di aplikasi untuk memublikasikannya kembali saat pengguna membuka aplikasi Anda di perangkat barunya.
- Pintasan yang dipasangi pin otomatis dipulihkan ke peluncur perangkat, tetapi sistem tidak mencadangkan ikon yang terkait dengan pintasan yang dipasangi pin. Oleh karena itu, Anda harus menyimpan image pintasan yang dipasangi pin di aplikasi untuk mempermudah memulihkannya pada perangkat baru.
Cuplikan kode berikut menunjukkan cara terbaik untuk memulihkan pintasan dinamis aplikasi Anda dan cara memeriksa apakah pintasan yang dipasangi pin di aplikasi Anda dipertahankan atau tidak:
Kotlin
class MyMainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (ShortcutManagerCompat.dynamicShortcuts.size == 0) { // Application restored. Need to re-publish dynamic shortcuts. if (ShortcutManagerCompat.pinnedShortcuts.size > 0) { // Pinned shortcuts have been restored. Use // updateShortcuts() to make sure they contain // up-to-date information. } } } // ... }
Java
public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (ShortcutManagerCompat.getDynamicShortcuts().size() == 0) { // Application restored. Need to re-publish dynamic shortcuts. if (ShortcutManagerCompat.getPinnedShortcuts().size() > 0) { // Pinned shortcuts have been restored. Use // updateShortcuts() to make sure they contain // up-to-date information. } } } // ... }
Resource tambahan
Contoh Android AppShortcuts menunjukkan lebih lanjut penggunaan alur kerja yang dibahas di halaman ini.