Kısayollar, kullanıcılarınızın uygulamanızın bölümlerine hızlı bir şekilde erişmelerine yardımcı olarak belirli içerik türlerini kullanıcılara sunar.
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 bir 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ı yönlendirir. Kullanıcıların, sabitlenmiş bir kısayol kullanma gibi yöntemlerle uygulamanızın kendilerine nasıl içerik sunacağını 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şim kurduğu süre boyunca tutarlı bir yapı kullanan içeriklere bağlantı veren uygulamalar için en iyi seçenektir. Çoğu başlatıcı aynı anda yalnızca dört kısayol gösterdiğinden, statik kısayollar rutin bir görevi tutarlı şekilde gerçekleştirmek (örneğin, kullanıcı, takvimini veya e-postasını belirli bir şekilde görüntülemek istediğinde) yararlı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 gerçekleştirdiği işlemlere göre özelleştirilir. Örneğin, kullanıcının başlatma sırasında mevcut seviyesinden başlamasına olanak tanıyan 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ı odaklı belirli işlemler için kullanılır. Örneğin, bir kullanıcı başlatıcıya belirli bir web sitesini sabitlemek isteyebilir. Bu, kullanıcının özel bir işlem (ör. web sitesine tek bir adımda gitme) varsayılan bir tarayıcı örneğini kullanmaktan daha hızlı şekilde gerçekleştirmesine olanak 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ı olmalıdır. Statik kısayollar için iyi seçenekler arasında gönderilen iletileri görüntüleme, bir alarm ayarlama ve kullanıcının o günkü egzersiz etkinliğini görüntüleme yer alır.
Statik kısayol oluşturmak için aşağıdakileri yapın:
-
Uygulamanızın
AndroidManifest.xml
dosyasında, intent 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 dosyasına 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, statik kısayolla ilgili bilgiler (ör. simge, açıklama etiketleri ve uygulama içinde başlattığı amaçlar) 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ştirin
Aşağıdaki listede, statik bir kısayol içindeki farklı özelliklerin açıklamaları yer almaktadır. 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 dize sabit 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()
inceleyin. -
android:shortcutLongLabel
-
Kısayolun amacını açıklayan genişletilmiş ifade. Yeterli alan varsa başlatıcı,
android:shortcutShortLabel
yerine bu değeri gösterir. Mümkün olduğunda bu uzun açıklamayı 25 karakterle sınırlandırın.Daha fazla bilgi için
setLongLabel()
inceleyin. -
android:shortcutDisabledMessage
-
Kullanıcı, devre dışı bırakılmış bir kısayolu başlatmaya çalıştığında desteklenen başlatıcıda görünen mesaj. Mesaj, kullanıcıya kısayolun neden devre dışı bırakıldığını açıklamalıdır.
android:enabled
,true
ise bu özelliğin değerinin hiçbir etkisi yoktur. -
android:enabled
-
Kullanıcının desteklenen bir başlatıcıdan kısayolla etkileşimde bulunup bulunamayacağını belirler. Varsayılan
android:enabled
değeritrue
'dir. 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 kısayolu kullanıcıya 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 simgeleri kullanın.
İç öğeleri yapılandırma
Bir uygulamanın statik kısayollarını listeleyen XML dosyası, her bir <shortcut>
öğesinde 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 amaç,
android:action
özelliği için bir değer sağlamalıdır.Tek bir kısayol için birden fazla amaç sağlayabilirsiniz. Ayrıntılar için Birden çok amacı ve etkinliği yönetme, Amaç belirleme ve
TaskStackBuilder
sınıfı referansına bakın. -
categories
-
Uygulamanızın kısayollarının gerçekleştirdiği işlem türleri (ör. yeni sohbet mesajları oluşturma) 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.
Yukarıdaki ö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 kısayol çağırmak için Google Asistan ile sesli komutları kullanmaları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 farklılık gösterebilir. Dinamik kısayolların iyi kullanım alanları arasında belirli bir kişiyi aramak, belirli bir konuma gitmek ve kullanıcının son kaydetme 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 kodları azaltır ve kısayollarınızın Android sürümlerinde tutarlı bir şekilde çalışmasını sağlar. Bu kitaplık, Google Kısayollar Entegrasyonu Kitaplığı ile Asistan gibi Google yüzeylerinde görünebilmelerini sağlayacak dinamik kısayolları aktarmak için de gereklidir.
ShortcutManagerCompat
API, uygulamanızın dinamik kısayollarla aşağıdaki işlemleri gerçekleştirmesini sağlar:
-
Aktar ve güncelle: Dinamik kısayollarınızı yayınlamak ve güncellemek için
pushDynamicShortcut()
kullanın. Aynı kimliğe sahip dinamik veya sabitlenmiş kısayollar varsa her değişken kısayol güncellenir. -
Kaldır:
removeDynamicShortcuts()
kullanarak bir dinamik kısayol grubunu kaldırın.removeAllDynamicShortcuts()
kullanan tüm dinamik kısayolları kaldırın.
Kısayollarda işlem gerçekleştirme hakkında daha fazla bilgi için Kısayolları yönetme bölümüne ve ShortcutManagerCompat
referansına göz atın.
Aşağıda, dinamik kısayol oluşturmaya ve bunu uygulamanızla ilişkilendirmeye ilişkin bir örnek verilmiştir:
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. Bu özellik, başlatıcı gibi Android yüzeylerinde ve Asistan gibi Google yüzeylerinde görüntülenebilecek dinamik kısayollara ulaşmanıza olanak tanır. Bu kitaplığın kullanılması, kullanıcıların uygulamanızda belirli içeriklere hızlıca erişmek veya işlemleri tekrar oynatmak için kullanabileceğiniz kısayolları keşfetmelerine yardımcı olur.
Örneğin, bir mesajlaşma uygulaması, bir kullanıcı bir kişiye mesaj attıktan sonra "Ali" adlı kişi için dinamik kısayol gönderebilir. Dinamik kısayol aktarıldıktan sonra kullanıcı Asistan'a "Ok Google, ÖrnekUygulama'da Ali'ye mesaj gönder" diye sorarsa Asistan, ExampleApp'i başlatabilir ve bunu otomatik olarak Ali'ye mesaj gönderecek şekilde yapılandırabilir.
Bu kitaplıkla aktarılan dinamik kısayollar, cihaz başına uygulanan kısayol sınırlarına tabi değildir. Bu, bir kullanıcı ilişkili bir işlemi her tamamladığında uygulamanızın bir kısayola itmesini sağlar. Sık kullanılan kısayolları bu şekilde aktarmak Google'ın, kullanıcınızın kullanım kalıplarını anlamasını ve ona bağlamsal olarak alakalı kısayollar önermesini sağlar.
Ö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 bir "koşu başlat" kısayolu önerebilir.
Google Kısayolları Entegrasyon Kitaplığı'nın kendisi herhangi bir adreslenebilir işlev sunmaz. Bu kitaplığı uygulamanıza ekleyerek Google yüzeyleri, uygulamanızın ShortcutManagerCompat
ile gönderdiği kısayolları alabilir.
Bu kitaplığı uygulamanızda kullanmak için aşağıdaki adımları uygulayın:
-
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ıklar 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 doğrulamak için
isRequestPinShortcutSupported()
uygulamasını kullanın. -
Kısayolun mevcut olup olmamasına bağlı olarak şu iki yöntemden birini kullanarak bir
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ısayolu 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()
yöntemini çağırarak kısayolu cihaz başlatıcıya sabitleyin. Bu işlem sırasında, uygulamanıza yalnızca kısayol başarıyla sabitlendiğinde bildirim gönderen birPendingIntent
nesnesi aktarabilirsiniz.Uygulamanız, bir 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ş 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
Ayrıca, kullanıcıların özel seçenekler ve 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 örneği gösterilmektedir.
Uygulamanızın manifest dosyasında etkinliğin <intent-filter>
öğesine ACTION_CREATE_SHORTCUT
ifadesini ekleyin. Bu bildirim, kullanıcı bir kısayol oluşturmaya çalıştığında aşağıdaki davranışı oluşturur:
- Sistem, uygulamanızın özel etkinliğini başlatır.
- Kullanıcı, kısayol seçeneklerini ayarlar.
- Kullanıcı, onay düğmesini seçer.
-
Uygulamanız,
createShortcutResultIntent()
yöntemini kullanarak kısayolu oluşturur. Bu yöntem, uygulamanızınsetResult()
kullanarak önceden yürütülen etkinliğe geri gönderdiği birIntent
döndürür. -
Uygulamanız, özelleştirilmiş kısayolu oluşturmak için kullanılan etkinlikte
finish()
çağırıyor.
Benzer şekilde, kullanıcılar 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 başlatıcı bulunan 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 dokunun ve basılı tutun.
- Cihazın başlatıcısına sabitlemek istediğiniz kısayolu sürükleyin.