Kısayollar, uygulamanızın bölümlerine hızlı bir şekilde erişmelerine yardımcı olarak kullanıcılarınıza belirli içerik türleri sunar.
![Uygulama kısayolları ile sabitlenmiş kısayollar arasındaki kontrastı gösteren resim](https://developer.android.com/static/images/guide/topics/ui/shortcuts/pinned-shortcuts.png?authuser=5&hl=tr)
Kısayollarla içerik sunma şekliniz, kullanım alanınıza ve kısayolun bağlamının uygulama odaklı mı yoksa kullanıcı odaklı mı olduğuna bağlıdır. Statik kısayolun bağlamı değişmese ve dinamik kısayolun bağlamı sürekli değişse de uygulamanız her iki durumda da bağlamı sağlar. Kullanıcının, uygulamanızın kendisine nasıl içerik sunacağını (ör. sabitlenmiş bir kısayolla) seçtiği durumlarda, bağlam kullanıcı tarafından tanımlanır. Aşağıdaki senaryolarda, her kısayol türü için birkaç kullanım alanı açıklanmaktadır:
- Statik kısayollar , kullanıcının uygulamayla etkileşiminin ömrü boyunca tutarlı bir yapı kullanarak içeriklere bağlantı veren uygulamalar için idealdir. Çoğu başlatıcı aynı anda yalnızca dört kısayol gösterdiğinden, statik kısayollar rutin bir görevi tutarlı bir şekilde gerçekleştirmek (örneğin, kullanıcı takvimini veya e-postasını belirli bir şekilde görüntülemek istediğinde) faydalıdır .
- Dinamik kısayollar, bağlama duyarlı uygulamalardaki işlemler için kullanılır. Bağlama duyarlı kısayollar, kullanıcıların uygulamada yaptığı işlemlere göre özelleştirilir. Örneğin, kullanıcının başlatma sırasında mevcut seviyesinden başlamasını sağlayan bir oyun derlerseniz kısayolu sık sık güncellemeniz gerekir. Dinamik kısayol kullanmak, kullanıcı bir seviyeyi her temizlediğinde kısayolu güncellemenize olanak tanır.
- Sabitlenmiş kısayollar kullanıcı tabanlı belirli işlemler için kullanılır. Örneğin, bir kullanıcı belirli bir web sitesini başlatıcıya sabitlemek isteyebilir. Bu, kullanıcının özel bir işlem (ör. web sitesine tek adımda gitme) varsayılan bir tarayıcı örneğini kullanmaktan daha hızlı bir şekilde gerçekleştirmesini sağladığı için yararlıdır.
Statik kısayollar oluşturma
Statik kısayollar, uygulamanızdaki genel işlemlere bağlantılar sağlar ve bu işlemler, uygulamanızın mevcut sürümünün kullanım ömrü boyunca tutarlı kalmalıdır. Statik kısayollar, gönderilen mesajları görüntülemek, bir alarm ayarlamak ve kullanıcının günlük egzersiz etkinliğini görüntülemektir.
Statik kısayol oluşturmak için aşağıdakileri yapın:
-
Uygulamanızın
AndroidManifest.xml
dosyasında, amaç filtreleriandroid.intent.action.MAIN
işlemine veandroid.intent.category.LAUNCHER
kategorisine ayarlanmış etkinliği bulun. -
Bu etkinliğe, uygulama kısayollarının tanımlandığı kaynak dosyaya başvuran bir
<meta-data>
öğesi ekleyin:<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>
-
res/xml/shortcuts.xml
adlı yeni bir kaynak dosyası oluşturun. -
Yeni kaynak dosyasına
<shortcut>
öğelerinin listesini içeren bir<shortcuts>
kök öğesi ekleyin. Her<shortcut>
öğesine, simgesi, açıklama etiketleri ve uygulama içinde başlattığı niyetler dahil olmak üzere statik bir kısayolla ilgili bilgiler ekleyin:<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>
Özellik değerlerini özelleştirme
Aşağıdaki liste, statik bir kısayoldaki farklı özelliklerin açıklamalarını içerir. android:shortcutId
ve android:shortcutShortLabel
için bir değer girin. Diğer tüm değerler isteğe bağlıdır.
-
android:shortcutId
-
Bir
ShortcutManager
nesnesi üzerinde işlem gerçekleştirdiğinde kısayolu temsil eden bir dize değişmez değeri. -
android:shortcutShortLabel
-
Kısayolun amacını açıklayan kısa ve öz bir ifade. Mümkün olduğunda bu kısa açıklamayı 10 karakterle sınırlandırın.
Daha fazla bilgi için
setShortLabel()
konusuna bakın. -
android:shortcutLongLabel
-
Kısayolun amacını açıklayan genişletilmiş ifade. Yeterli alan varsa başlatıcı,
android:shortcutShortLabel
yerine bu değeri görüntüler. Mümkün olduğunda bu uzun açıklamayı 25 karakterle sınırlandırın.Daha fazla bilgi için
setLongLabel()
konusuna bakın. -
android:shortcutDisabledMessage
-
Kullanıcı, devre dışı bırakılmış bir kısayolu başlatmaya çalıştığında desteklenen bir başlatıcıda görünen mesaj. Mesajda, kullanıcıya kısayolun neden devre dışı bırakıldığı açıklanmalıdır.
android:enabled
,true
ise bu özelliğin değerinin hiçbir etkisi olmaz. -
android:enabled
-
Kullanıcının desteklenen bir başlatıcıdan kısayolla etkileşimde bulunup bulunamayacağını belirler.
android:enabled
öğesinin varsayılan değeritrue
değeridir. Seçeneğifalse
olarak ayarladıysanız kısayolu neden devre dışı bıraktığınızı açıklayan birandroid:shortcutDisabledMessage
belirleyin. Böyle bir mesaj sağlamanız gerekmediğini düşünüyorsanız kısayolu XML dosyasından tamamen kaldırın. -
android:icon
-
Başlatıcının, kullanıcıya kısayolu gösterirken kullandığı bit eşlem veya uyarlanabilir simge. Bu değer, bir görüntünün yolu veya görüntüyü içeren kaynak dosyası olabilir. Performansı ve tutarlılığı artırmak için mümkün olduğunda uyarlanabilir simgeler kullanın.
İç öğeleri yapılandırın
Bir uygulamanın statik kısayollarını listeleyen XML dosyası, her <shortcut>
öğesinin içinde aşağıdaki öğeleri destekler. Tanımladığınız her statik kısayol için bir intent
iç öğesi eklemeniz gerekir.
-
intent
-
Kullanıcı, kısayolu seçtiğinde sistemin başlattığı işlem. Bu niyet,
android:action
özelliği için bir değer sağlamalıdır.Tek bir kısayol için birden çok amaç sağlayabilirsiniz. Ayrıntılar için bkz. Birden çok amaç ve etkinliği yönetme, Amaç belirleme ve
TaskStackBuilder
sınıf referansı. -
categories
-
Uygulamanızın kısayollarının gerçekleştirdiği yeni sohbet mesajları gibi işlem türleri için bir gruplandırma sağlar.
Desteklenen kısayol kategorilerinin listesi için
ShortcutInfo
sınıf referansına bakın. -
capability-binding
-
Kısayolla bağlantılı özelliği tanımlar.
Önceki örnekte kısayol, Uygulama İşlemleri yerleşik amacı olan
CREATE_MESSAGE
için bildirilen bir özelliğe bağlıdır. Bu özellik bağlama, kullanıcıların bir kısayolu çağırmak için Google Asistan ile sesli komutları kullanmasına olanak tanır.
Dinamik kısayollar oluşturma
Dinamik kısayollar, uygulamanızdaki belirli, bağlama duyarlı işlemlere bağlantılar sağlar. Bu işlemler, uygulamanızın kullanımı ile uygulamanızın çalıştığı süre arasında değişiklik gösterebilir. Dinamik kısayolların iyi kullanımları arasında belirli bir kişiyi çağırmak, belirli bir konuma gitmek ve kullanıcının son kayıt noktasından bir oyun yüklemek yer alır. Bir ileti dizisini açmak için dinamik kısayolları da kullanabilirsiniz.
ShortcutManagerCompat
Jetpack kitaplığı, uygulamanızdaki dinamik kısayolları yönetmenizi sağlayan
ShortcutManager
API'nin yardımcısıdır. ShortcutManagerCompat
kitaplığını kullanmak, standart kodu azaltır ve
kısayollarınızın Android sürümlerinde tutarlı bir şekilde çalışmasını sağlar. Bu kitaplık, dinamik kısayolların Asistan gibi Google platformlarında Google Kısayollar Entegrasyon Kitaplığı ile gösterilmeye uygun olması amacıyla dinamik kısayolların aktarılması için de gereklidir.
ShortcutManagerCompat
API, uygulamanızın dinamik kısayollarla aşağıdaki işlemleri gerçekleştirmesini sağlar:
-
Aktarma ve güncelleme: Dinamik kısayollarınızı yayınlamak ve güncellemek için
pushDynamicShortcut()
öğesini kullanın. Aynı kimliğe sahip dinamik veya sabitlenmiş kısayollar varsa her bir değişken kısayol güncellenir. -
Kaldır:
removeDynamicShortcuts()
kullanarak bir dinamik kısayol grubunu kaldırın.removeAllDynamicShortcuts()
kullanarak tüm dinamik kısayolları kaldırın.
Kısayollarla ilgili işlem gerçekleştirme hakkında daha fazla bilgi için Kısayolları yönetme ve ShortcutManagerCompat
referansına göz atın.
Dinamik kısayol oluşturma ve bunu uygulamanızla ilişkilendirmeyle ilgili bir örneği burada bulabilirsiniz:
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);
Google Kısayolları Entegrasyon Kitaplığı'nı ekleyin
Google Kısayolları Entegrasyonu Kitaplığı, isteğe bağlı bir Jetpack kitaplığıdır. Başlatıcı gibi Android yüzeylerinde ve Asistan gibi Google yüzeylerinde görüntülenebilecek dinamik kısayolları kullanıma sunmanızı sağlar. Bu kitaplığın kullanılması, kullanıcıların uygulamanızda belirli içeriklere veya tekrar oynatma işlemlerine hızlıca erişmek için kullanabileceğiniz kısayolları keşfetmelerine yardımcı olur.
Örneğin, bir mesajlaşma uygulaması, bir kullanıcı bu kişiye mesaj attıktan sonra "Ali" adlı kişi için dinamik kısayol aktarabilir. Dinamik kısayol aktarıldıktan sonra, kullanıcı Asistan'a "Ok Google, ExampleApp'te Ali'ye mesaj gönder" diye sorarsa Asistan, ExampleApp'i başlatabilir ve bunu Ali'ye mesaj gönderecek şekilde otomatik olarak yapılandırabilir.
Bu kitaplıkla aktarılan dinamik kısayollar, cihaz başına uygulanan kısayol sınırlarına tabi değildir. Böylece, kullanıcılar uygulamanızda ilişkili bir işlemi her tamamladığında uygulamanız kısayol oluşturabilir. Sık kullanılan kısayolları bu şekilde aktarmak Google'ın, kullanıcılarınızın kullanım alışkanlıklarını anlamasına ve kullanıcıya bağlamsal olarak alakalı kısayollar önermesine olanak tanır.
Örneğin Asistan, kullanıcının genellikle her sabah çalıştırdığı, fitness izleme uygulamanızdan aktarılan kısayollardan öğrenebilir ve kullanıcı sabah telefonunu eline aldığında proaktif olarak "koşu başlat" kısayolu önerebilir.
Google Kısayolları Entegrasyon Kitaplığı'nın kendisi adreslenebilir herhangi bir işlev sunmaz. Bu kitaplığı uygulamanıza eklediğinizde Google yüzeyleri, ShortcutManagerCompat
kullanarak uygulamanızın yayınladığı kısayolları alabilir.
Bu kitaplığı uygulamanızda kullanmak için aşağıdaki adımları izleyin:
-
gradle.properties
dosyanızı AndroidX kitaplıklarını destekleyecek şekilde güncelleyin:android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true
-
app/build.gradle
ürününde, Google Kısayolları Entegrasyon Kitaplığı veShortcutManagerCompat
için bağımlılık ekleyin:dependencies { implementation "androidx.core:core:1.6.0" implementation 'androidx.core:core-google-shortcuts:1.0.0' ... }
Android projenize eklenen kitaplık bağımlılıkları ile uygulamanız, başlatıcıda ve katılımcı Google yüzeylerinde gösterilmeye uygun dinamik kısayolları aktarmak için ShortcutManagerCompat
alanındaki pushDynamicShortcut()
yöntemini kullanabilir.
Sabitlenmiş kısayollar oluştur
Android 8.0 (API düzeyi 26) ve sonraki sürümlerde sabitlenmiş kısayollar oluşturabilirsiniz. Statik ve dinamik kısayolların aksine, sabitlenen kısayollar, desteklenen başlatıcılarda ayrı simgeler olarak görünür. Şekil 1'de, bu iki kısayol türü arasındaki fark gösterilmektedir.
Uygulamanızı kullanarak desteklenen bir başlatıcıya kısayol sabitlemek için aşağıdaki adımları tamamlayın:
-
Cihazın varsayılan başlatıcısının uygulama içi kısayolları sabitlemeyi desteklediğini
isRequestPinShortcutSupported()
kullanın. -
Kısayolun mevcut olup olmadığına bağlı olarak şu iki yöntemden birini kullanarak
ShortcutInfo
nesnesi oluşturun:-
Kısayol varsa yalnızca mevcut kısayolun kimliğini içeren bir
ShortcutInfo
nesnesi oluşturun. Sistem, kısayolla ilgili diğer tüm bilgileri otomatik olarak bulup sabitler. -
Yeni bir kısayol sabitliyorsanız yeni kısayol için kimlik, amaç ve kısa etiket içeren bir
ShortcutInfo
nesnesi oluşturun.
-
Kısayol varsa yalnızca mevcut kısayolun kimliğini içeren bir
-
requestPinShortcut()
numaralı telefonu arayarak kısayolu cihaz başlatıcısına sabitleyin. Bu işlem sırasında, uygulamanızı yalnızca kısayol başarıyla sabitlendiğinde bilgilendiren birPendingIntent
nesnesi aktarabilirsiniz.Uygulamanız, kısayol sabitlendikten sonra içeriğini
updateShortcuts()
yöntemini kullanarak güncelleyebilir. Daha fazla bilgi için Kısayolları güncelleme konusunu okuyun.
Aşağıdaki kod snippet'inde, sabitlenmiş bir kısayolun nasıl oluşturulacağı gösterilmektedir.
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()); }
Özel kısayol etkinliği oluşturma
!['Gmail başlatıcı simgesini ana ekranınıza eklemek istiyor musunuz?' isteminin yer aldığı özel iletişim kutusu etkinliğini gösteren resim Özel seçenekler "Hayır, teşekkürler" ve "Simge ekle"dir.](https://developer.android.com/static/images/guide/topics/ui/shortcuts/pinned-shortcuts-dialog.png?authuser=5&hl=tr)
Kullanıcıların, özel seçenekler ve bir onay düğmesiyle tamamlanan kısayollar oluşturmasına yardımcı olan özel bir etkinlik de oluşturabilirsiniz. Şekil 2'de Gmail uygulamasındaki bu tür bir etkinlik gösterilmektedir.
Uygulamanızın manifest dosyasında etkinliğin <intent-filter>
öğesine ACTION_CREATE_SHORTCUT
ekleyin. Bu bildirim, kullanıcı bir kısayol oluşturmayı denediğinde aşağıdaki davranışı ayarlar:
- Sistem, uygulamanızın özel etkinliğini başlatır.
- Kullanıcı kısayola ilişkin seçenekleri ayarlar.
- Kullanıcı onay düğmesini seçer.
-
Uygulamanız,
createShortcutResultIntent()
yöntemini kullanarak kısayolu oluşturuyor. Bu yöntemIntent
döndürür. Uygulamanız,setResult()
kullanarak daha önce yürütülen etkinliğe geri geçiş yapar. -
Uygulamanız, özelleştirilmiş kısayolu oluşturmak için kullanılan etkinlikte
finish()
çağrısı yapıyor.
Benzer şekilde uygulamanız, kullanıcılardan yüklemeden sonra veya uygulama ilk kez başlatıldığında ana ekrana sabitlenmiş kısayollar eklemesini isteyebilir. Bu yöntem, kullanıcılarınızın sıradan iş akışlarının bir parçası olarak kısayol oluşturmasına yardımcı olduğu için etkilidir.
Test kısayolları
Uygulamanızın kısayollarını test etmek için uygulamanızı kısayolları destekleyen bir başlatıcıya sahip bir cihaza yükleyin. Ardından, aşağıdaki işlemleri gerçekleştirin:
- Uygulamanız için tanımladığınız kısayolları görüntülemek üzere uygulamanızın başlatıcı simgesine dokunup basılı tutun.
- Cihazın başlatıcısına sabitlemek için bir kısayolu sürükleyin.