Kısayollar, kullanıcıların uygulamanızın bölümlerine hızlı bir şekilde erişmesine yardımcı olarak onlara belirli içerik türleri 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 kısayolların bağlamı değişmezken dinamik kısayolların bağlamı sürekli değişir. Ancak her iki durumda da bağlamı uygulamanız belirler. Kullanıcının, uygulamanızın içeriği kendisine nasıl sunacağını seçtiği durumlarda (ör. sabitlenmiş kısayol) 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şimi boyunca tutarlı bir yapı kullanarak içeriğe bağlantı veren uygulamalar için en uygun 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ı bir şekilde gerçekleştirmek için kullanışlıdır. Örneğin, kullanıcı takvimini veya e-postasını belirli bir şekilde görüntülemek istiyorsa bu kısayolları kullanabilir.
- Dinamik kısayollar, uygulamalardaki bağlama duyarlı işlemler için kullanılır. Bağlama duyarlı kısayollar, kullanıcıların bir uygulamada gerçekleştirdiği işlemlere göre uyarlanır. Örneğin, kullanıcının başlatıldığında mevcut seviyesinden başlamasına olanak tanıyan bir oyun oluşturursanız kısayolu sık sık güncellemeniz gerekir. Dinamik kısayol kullanarak, kullanıcı her seviyeyi tamamladığında kısayolu güncelleyebilirsiniz.
- Sabitlenmiş kısayollar, kullanıcı tarafından gerçekleştirilen belirli işlemler için kullanılır. Örneğin, bir kullanıcı belirli bir web sitesini başlatıcıya sabitlemek isteyebilir. Bu özellik, kullanıcının özel bir işlem (ör. web sitesine tek adımda gitme) yapmasına olanak tanıdığı için faydalıdır. Bu işlem, tarayıcının varsayılan bir örneğini kullanmaktan daha hızlı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 için gönderilen mesajları görüntüleme, alarm ayarlama ve kullanıcının o günkü egzersiz etkinliğini gösterme gibi seçenekler uygundur.
Statik kısayol oluşturmak için aşağıdakileri yapın:
- Uygulamanızın
AndroidManifest.xmldosyasında, amaç filtreleriandroid.intent.action.MAINişlemi veandroid.intent.category.LAUNCHERkategorisine ayarlanmış etkinliği bulun. Bu etkinliğe, uygulamanın kısayollarının tanımlandığı kaynak dosyaya referans veren 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.xmladlı 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 uygulamada başlattığı amaçlar dahil olmak üzere statik bir kısayolla ilgili bilgileri 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.Main" /> <!-- 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 listede, statik kısayoldaki 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:shortcutIdBir
ShortcutManagernesnesi üzerinde işlemler gerçekleştirildiğinde kısayolu temsil eden bir dize değişmezi.android:shortcutShortLabelKısayolun amacını açıklayan kısa bir ifade. Mümkün olduğunda bu kısa açıklamayı 10 karakterle sınırlayın.
Daha fazla bilgi için
setShortLabel()başlıklı makaleyi inceleyin.android:shortcutLongLabelKısayolun amacını açıklayan uzun bir ifade. Yeterli alan varsa başlatıcı,
android:shortcutShortLabelyerine bu değeri gösterir. Mümkün olduğunda bu uzun açıklamayı 25 karakterle sınırlayın.Daha fazla bilgi için
setLongLabel()başlıklı makaleyi inceleyin.android:shortcutDisabledMessageKullanı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, kısayolun neden devre dışı bırakıldığı kullanıcıya açıklanmalıdır.
android:enableddeğeritrueise bu özelliğin değeri etkisizdir.android:enabledKullanıcının, desteklenen bir başlatıcıdan kısayolla etkileşime girip giremeyeceğini belirler.
android:enabledpolitikasının varsayılan değeritrue'dır. Bu ayarıfalseolarak ayarlarsanız kısayolu neden devre dışı bıraktığınızı açıklayan birandroid:shortcutDisabledMessagebelirleyin. Böyle bir mesaj sağlamanız gerekmediğini düşünüyorsanız kısayolu XML dosyasından tamamen kaldırın.android:iconBaşlatıcının, kısayolu kullanıcıya gösterirken kullandığı bitmap veya uyarlanabilir simge. Bu değer, bir resmin yolu veya resmi 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ırma
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.
intentKullanıcı kısayolu seçtiğinde sistemin başlattığı işlem. Bu amaç,
android:actionözelliğinin değerini sağlamalıdır.Tek bir kısayol için birden fazla amaç sağlayabilirsiniz. Ayrıntılar için Birden fazla amaç ve etkinliği yönetme, Amaç belirleme ve
TaskStackBuildersınıfı referansına bakın.categoriesUygulamanızın kısayollarının gerçekleştirdiği işlem türleri (ör. yeni sohbet mesajları oluşturma) için gruplandırma sağlar.
Desteklenen kısayol kategorilerinin listesi için
ShortcutInfosınıf referansına bakın.capability-bindingKısayolla bağlantılı özelliği bildirir.
Önceki örnekte kısayol,
CREATE_MESSAGEiçin beyan edilen bir özelliğe bağlıdır. Bu, uygulama işlemleri yerleşik niyetidir. Bu yetenek bağlama, kullanıcıların kısayol çağırmak için Google Asistan ile sözlü komutlar kullanmasına olanak tanır.
Dinamik kısayollar oluşturma
Dinamik kısayollar, uygulamanızdaki bağlama duyarlı belirli işlemlere bağlantılar sağlar. Bu işlemler, uygulamanızın kullanımları arasında ve uygulamanız çalışırken değişebilir. Dinamik kısayollar, belirli bir kişiyi arama, belirli bir konuma gitme ve kullanıcının son kayıt noktasından bir oyunu yükleme gibi durumlarda kullanılabilir. Bir görüşmeyi açmak için dinamik kısayolları da kullanabilirsiniz.
ShortcutManagerCompat Jetpack kitaplığı, uygulamanızdaki dinamik kısayolları yönetmenize olanak tanıyan ShortcutManager API'si için yardımcı bir kitaplıktı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 Google Kısayolları Entegrasyon Kitaplığı ile Asistan gibi Google yüzeylerinde görünmeye uygun olması için de gereklidir.
ShortcutManagerCompat API, uygulamanızın dinamik kısayollarla aşağıdaki işlemleri gerçekleştirmesine olanak tanır:
- Gönderme ve güncelleme: Dinamik kısayollarınızı yayınlamak ve güncellemek için
pushDynamicShortcut()simgesini kullanın. Aynı kimliğe sahip dinamik veya sabitlenmiş kısayollar varsa her değiştirilebilir kısayol güncellenir. - Kaldırma:
removeDynamicShortcuts()kullanarak bir grup dinamik kısayolu kaldırın.removeAllDynamicShortcuts()kullanarak tüm dinamik kısayolları kaldırın.
Kısayollarda işlem yapma hakkında daha fazla bilgi için Kısayolları yönetme ve ShortcutManagerCompat referansını inceleyin.
Dinamik kısayol oluşturma ve bunu uygulamanızla ilişkilendirme örneğini aşağıda bulabilirsiniz:
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)
Google Kısayolları Entegrasyon Kitaplığı'nı ekleyin
Google Kısayolları Entegrasyon Kitaplığı, isteğe bağlı bir Jetpack kitaplığıdır. Bu API, başlatıcı ve Google platformları gibi Android platformlarında gösterilebilen dinamik kısayolları göndermenize olanak tanır. Bu kitaplığı kullanarak kullanıcıların, uygulamanızdaki belirli içeriklere hızlıca erişmek veya işlemleri tekrar oynatmak için kısayollarınızı keşfetmesine yardımcı olabilirsiniz.
Bu kitaplıkla gönderilen dinamik kısayollar, cihaz başına uygulanan kısayol sınırlarına tabi değildir. Bu sayede uygulamanız, kullanıcılar uygulamanızda ilişkili bir işlemi her tamamladığında kısayol gönderebilir. Bu şekilde sık sık kısayol göndermek, Google'ın kullanıcınızın kullanım alışkanlıklarını anlamasına ve onlara bağlama uygun kısayollar önermesine olanak tanır.
Örneğin, Asistan, kullanıcının her sabah koştuğunu fitness takip uygulamanızdan gelen kısayollardan öğrenebilir ve kullanıcı sabah telefonunu aldığında proaktif olarak "koşuya başla" kısayolunu önerebilir.
Google Kısayolları Entegrasyon Kitaplığı, kendi içinde herhangi bir adreslenebilir işlev sunmaz. Bu kitaplığı uygulamanıza eklediğinizde Google platformları, uygulamanızın ShortcutManagerCompat kullanarak gönderdiği kısayolları kullanabilir.
Bu kitaplığı uygulamanızda kullanmak için ShortcutManagerCompat ve Google Kısayolları Entegrasyon Kitaplığı'nın bağımlılıklarını app/build.gradle veya app/build.gradle.kts dosyanıza ekleyin:
Kotlin
dependencies {
implementation("androidx.core:core:1.6.0")
implementation("androidx.core:core-google-shortcuts:1.0.0")
}
Modern
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ı sayesinde uygulamanız, başlatıcıda ve katılan Google yüzeylerinde gösterilmeye uygun dinamik kısayolları göndermek için ShortcutManagerCompat'taki pushDynamicShortcut() yöntemini kullanabilir.
Sabitlenmiş kısayollar oluşturma
Android 8.0 (API düzeyi 26) ve sonraki sürümlerde sabitlenmiş kısayollar oluşturabilirsiniz. Sabit ve dinamik kısayolların aksine, sabitlenmiş 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, kısayolların uygulama içi sabitlenmesini desteklediğini doğrulamak için
isRequestPinShortcutSupported()kullanın. Kimlik, amaç ve kısayol için kısa bir etiket içeren
ShortcutInfoCompatnesnesi oluşturun. Kısayol varsa mevcut kısayolun kimliğini kullanın. Sistem, kısayolla ilgili diğer tüm bilgileri otomatik olarak bulup sabitler.requestPinShortcut()'ı arayarak kısayolu cihazın başlatıcısına sabitleyin. Bu işlem sırasında, yalnızca kısayol başarıyla sabitlendiğinde uygulamanızı bilgilendiren birPendingIntentnesnesi iletebilirsiniz.Bir kısayol sabitlendikten sonra uygulamanız,
updateShortcuts()yöntemini kullanarak içeriklerini güncelleyebilir. Daha fazla bilgi için Kısayolları güncelleme başlıklı makaleyi inceleyin.
Aşağıdaki kod snippet'inde, sabitlenmiş kısayolun nasıl oluşturulacağı gösterilmektedir:
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { // Enable the existing shortcut with the ID "my-shortcut". val pinShortcutInfo = ShortcutInfoCompat.Builder(context, "my-shortcut") .setShortLabel("Website") .setIntent( Intent( Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/") ) ) .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 = ShortcutManagerCompat.createShortcutResultIntent(context, 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 */ PendingIntent.FLAG_IMMUTABLE ) ShortcutManagerCompat.requestPinShortcut( context, pinShortcutInfo, successCallback.intentSender ) }
Özel kısayol etkinliği oluşturma
Ayrıca, kullanıcıların özel seçenekler ve onay düğmesi içeren kısayollar oluşturmasına yardımcı olan özel bir etkinlik de oluşturabilirsiniz. Şekil 2'de, Gmail uygulamasında bu tür bir etkinliğin örneği gösterilmektedir.
Uygulamanızın manifest dosyasında, etkinliğin <intent-filter> öğesine ACTION_CREATE_SHORTCUT ekleyin. Bu bildirim, kullanıcı kısayol oluşturmaya çalıştığında aşağıdaki davranışı ayarlar:
- Sistem, uygulamanızın özel etkinliğini başlatır.
- Kullanıcı, kısayol için seçenekleri belirler.
- Kullanıcı, onay düğmesini seçer.
- Uygulamanız,
createShortcutResultIntent()yöntemini kullanarak kısayol oluşturuyor. Bu yöntem, uygulamanızınsetResult()kullanarak daha önce yürütülen etkinliğe geri ilettiği birIntentdöndürür. - Uygulamanız, özelleştirilmiş kısayolu oluşturmak için kullanılan etkinlikte
finish()işlevini çağırıyor.
Benzer şekilde, uygulamanız yükleme işleminden sonra veya ilk kez başlatıldığında kullanıcıları ana ekrana sabitlenmiş kısayollar eklemeye yönlendirebilir. Bu yöntem, kullanıcılarınızın normal iş akışlarının bir parçası olarak kısayol oluşturmasına yardımcı olduğu için etkilidir.
Kısayolları test etme
Uygulamanızın kısayollarını test etmek için uygulamanızı, kısayolları destekleyen bir başlatıcıya sahip cihaza yükleyin. Ardından aşağıdaki işlemleri yapın:
- 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.
- Kısayolu sürükleyerek cihazın başlatıcısına sabitleyin.