Diğer uygulamaların kullanıcıları için işlemleri kolaylaştırmak ve hızlandırmak için Doğrudan Paylaşım hedeflerini kullanın kullanarak URL'leri, resimleri veya diğer veri türlerini uygulamanızla paylaşın. Doğrudan Paylaşım çalışır Mesajlaşma ve sosyal uygulamalardaki kişileri doğrudan Android'de sunarak Sharesheet; kullanıcıların uygulamayı seçip kişiyi aramasına gerek kalmadan.
ShortcutManagerCompat
paylaşım kısayolları sağlayan bir AndroidX API'sidir.
kullanımdan kaldırılan ChooserTargetService
API ile uyumludur. Hem Paylaşım Kısayollarını hem de ChooserTargets
'ü yayınlamanın tercih edilen yolu budur. Talimatlar için
Hem Paylaşım Kısayolları hem deChooserTarget hedefleri sağlamak için AndroidX'i kullanma adlı makaleyi inceleyin.
bu sayfada yer alır.
Doğrudan Paylaşım hedeflerini yayınlama
Sharesheet Doğrudan Paylaşım satırı yalnızca Kısayollar API'si paylaşılıyor. Doğrudan Paylaşım hedeflerini yayınlamak için aşağıdaki adımları tamamlayın.
Uygulamanızın XML kaynak dosyasında
share-target
öğelerini tanımlayın.<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity"> <data android:mimeType="text/plain" /> <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" /> </share-target> </shortcuts>
Uygulamanız ilk kullanıma hazırlandığında
setDynamicShortcuts
kullanın. dinamik kısayolları önem derecesine göre sıralayabilirsiniz.Dizinin düşük olması önemin daha yüksek olduğunu gösterir. Herkesi aynı noktada buluşturuyorsanız kısa ve öz konuşmalara göre sıralanmış olarak en iyi şekilde yararlanabilirsiniz. Eski kısayolları yayınlamayın; bir görüşmede son 30 gün içindeki kullanıcı etkinliği eski olarak kabul edilir.
Kotlin
ShortcutManagerCompat.setDynamicShortcuts(myContext, listOf(shortcut1, shortcut2, ..))
Java
List<ShortcutInfoCompat> shortcuts = new ArrayList<>(); shortcuts.add(shortcut1); shortcuts.add(shortcut2); ... ShortcutManagerCompat.setDynamicShortcuts(myContext, shortcuts);
Bir iletişim uygulaması geliştiriyorsanız kısayol kullanımını Kullanıcı her seferinde
pushDynamicShortcut
hemen kişi bir ileti alır veya kişiye gönderir. Şunun için kısayol kullanımını bildirme konusuna bakın: iletişim uygulamalarına giderek daha fazla bilgi edinebilirsiniz. Örneğin, kullanıcı tarafından gönderilen iletilerin kullanımını raporlayın: özellik bağlamalarını belirterekShortcutInfoCompat.Builder#addCapabilityBinding
actions.intent.SEND_MESSAGE
özelliği var.Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
Kullanıcı bir kişiyi silerse
removeLongLivedShortcut
. Bu, tercih edilen sistem tarafından önbelleğe alınmış olup olmamasına bakılmaksızın kısayolu kaldırmanın kullanıma sunuyoruz. Aşağıdaki kod snippet'inde bunun nasıl yapılacağına dair bir örnek gösterilmektedir.Kotlin
val deleteShortcutId = "..." ShortcutManagerCompat.removeLongLivedShortcuts(myContext, listOf(deleteShortcutId))
Java
String deleteShortcutId = "..."; ShortcutManagerCompat.removeLongLivedShortcuts( myContext, Arrays.asList(deleteShortcutId));
Doğrudan Paylaşım hedeflerinizin sıralamasını iyileştirin
Android Sharesheet'te sabit sayıda Doğrudan Paylaşım hedefi gösteriliyor. Bu öneriler sıralamaya göre sıralanır. Potansiyel olarak, sitenizin sıralamasını kısayollarını kullanabilirsiniz:
- Tüm
shortcutIds
öğelerinin benzersiz olduğundan ve hiçbir zaman farklı hedefler için yeniden kullanılmadığından emin olun. setLongLived(true)
işlevini çağırarak kısayolun uzun ömürlü olmasını sağlayın.- İleti dizisiyle ilgili kısayollar için kısayol kullanımını raporla
ilgili kısayolları yeniden yayınlayarak giden ve gelen iletiler için
ShortcutManagerCompat.pushDynamicShortcut
aracılığıyla. Bu konuyla ilgili olarak İletişim uygulamaları için kısayol kullanımını bildirme bölümüne bakın. sayfasına bakın. - Alakasız veya eski Doğrudan Paylaşım hedefleri sağlamaktan kaçının. Örneğin, Kullanıcının son 30 gün içinde mesaj göndermediği kişiler.
- SMS uygulamalarında, kısa kodlara veya görüşmelere kısayol sunmaktan kaçının. potansiyel spam olarak tanımlanmıştır. Kullanıcıların kendileriyle paylaşımda bulunma olasılığı çok düşüktür yardımcı olan ekip çalışmasıdır.
- Kısayolu ilişkilendirmek için
setCategories()
numaralı telefonu arayın uygunmimeType
özellikleri hakkında daha fazla bilgi edinin. Örneğin, SMS uygulaması varsa ilgili kişi RCS veya MMS özellikli değilse karşılık gelen kısayoluimage/*
vevideo/*
. - Belirli bir görüşme için dinamik kısayol aktarıldıktan ve kullanım bildirilmediğinde kısayol kimliğini değiştirmeyin. Bu sayede, kullanım verileri saklanır bahsedeceğim.
Kullanıcı herhangi bir Doğrudan Paylaşım hedefine dokunursa uygulamanız onu kullanıcının etkileşimde bulunabileceği bir kullanıcı arayüzüne yönlendirmelidir. doğrudan hedefin konusuyla ilgili bir işlem yapabilirler. Gösterme kullanıcıya açıklama amaçlı bir kullanıcı arayüzü sunun ve bunları dokunulan hedef. Örneğin, bir mesajlaşma uygulamasında doğrudan paylaşıma dokunduğunuzda hedef, kullanıcıyı seçtiği kişiyle görüşme görünümüne yönlendirir. İlgili içeriği oluşturmak için kullanılan Klavye görünür durumda ve mesaj, paylaşılan verilerle önceden doldurulmuştur.
Paylaşım Kısayolları API'sı
Android 10 (API düzeyi 29) sürümünden itibaren
ShortcutInfo.Builder
yöntemler ve geliştirmeler ekledi
paylaşma hedefi hakkında ek bilgi sağlar:
setCategories()
- Android 10'dan itibaren kategoriler, şu kısayolları filtrelemek için de kullanılır: paylaşım amaçlarını ve işlemlerini işleyebilir. Bkz. Paylaşım bildirme hedef'i seçin. Bu alan kısayollar için gereklidir bu modellerin paylaşım hedefi olarak kullanılması amaçlanmıştır.
setLongLived()
Bir kısayolun yayından kaldırıldığında ya da uygulama tarafından görünmez hale getirilir (dinamik veya sabitlenmiş kısayol olarak). Kısayol uzun ömürlü olduğu için, taşıma sırasında dinamik kısayol olarak yayından kaldırıldı.
Bir kısayolu uzun ömürlü hale getirmek, sıralamasını iyileştirebilir. En iyi performansı elde edin sıralamasını inceleyin.
setShortLabel()
,setLongLabel()
Tek bir kişi için kısayol yayınlarken lütfen kullanıcının tam sürümünü ekleyin
setLongLabel()
içindeki ad ve takma ad veya ad gibi herhangi bir kısa adsetShortLabel()
dilinde.
GitHub'da Paylaşım Kısayolları Yayınlama örneğine bakın.
Kısayol görüntüleri sağlama
Paylaşım kısayolu oluşturmak için setIcon()
üzerinden bir resim eklemeniz gerekir.
Paylaşım kısayolları sistem yüzeylerinde görünebilir ve yeniden şekillendirilebilir.
Ayrıca, Android 7, 8 veya 9 (API düzeyleri 25,
26, 27 ve 28) yalnızca bit eşlem simgeleri arka plan olmadan görüntüleyebilir. Bu da
kontrastı önemli ölçüde azaltır. Kısayolunuzun istediğiniz gibi göründüğünden emin olmak için
IconCompat.createWithAdaptiveBitmap()
kullanarak uyarlanabilir bit eşlem sağlayabilirsiniz.
Uyarlanabilir bit eşlemlerin, uyarlanabilir simgeler için ayarlanan kurallara ve boyutlara uyduğundan emin olun. Bunu yapmanın en yaygın yolu, amaçlanan kare bit eşlemi 72x72 dp boyutunda ve 108x108 dp şeffaf tuvalde ortalanır. Simgeniz şeffaf bölgeler içeriyorsa, bir arka plan rengi eklemeniz gerekir; aksi takdirde şeffaf bölgeler siyah görünür.
Belirli bir şekle maskelenmiş görüntüler sağlamayın. Örneğin,
Android 10 (API düzeyi 29), Doğrudan Paylaşım için kullanıcı avatarları sağlamak yaygındı.
Bir daireye maskelenmiş ChooserTarget
öğeleri. Android Sharesheet ve diğer
sistem yüzeyleri artık şekil ve tema kısayollarını kullanıyor.
Paylaşım Kısayolları sağlamanın tercih edilen yöntemi
ShortcutManagerCompat
geriye dönük karşılaştırmayı, Doğrudan Paylaşım ChooserTarget
nesnelerini şu şekilde otomatik olarak şekillendirerek:
çevrelerine ekleyin.
Paylaşım hedefi tanımlama
Paylaşım hedefleri, statik kısayol tanımlarına benzer şekilde, uygulamanın kaynak dosyasında bildirilmelidir. Paylaşım ekle
kaynak dosyasındaki <shortcuts>
kök öğesinin içindeki hedef tanımları,
kısaltılmış bir sürüm içerir. Her bir <share-targets>
öğesi
Paylaşılan veri türü, eşleşen kategoriler ve
hedef sınıfını tanımlayın. XML kodu yalnızca
aşağıdaki gibidir:
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity"> <data android:mimeType="text/plain" /> <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" /> </share-target> </shortcuts>
Paylaşım hedefindeki veri öğesi, amaç filtresindeki veri spesifikasyonuna benzer. Her paylaşım hedefinde yalnızca bir uygulamanın yayınlanan kısayollarıyla eşleştirmek için kullanılan birden fazla kategori kendi paylaşım hedefi tanımlarını göz önünde bulundurun. Kategorilerde rastgele uygulama tanımlanmış olabilir değerler.
Kullanıcının Android Sharesheet'te Paylaşım Kısayolu'nu seçmesi durumunda, yukarıdaki örnek hedef paylaşımla eşleşirse uygulama şunu alır: paylaşım amacı:
Action: Intent.ACTION_SEND ComponentName: {com.example.android.sharingshortcuts / com.example.android.sharingshortcuts.SendMessageActivity} Data: Uri to the shared content EXTRA_SHORTCUT_ID: <ID of the selected shortcut>
Kullanıcı, paylaşım hedefini başlatıcı kısayollarından açarsa uygulama
paylaşım kısayolunu
Kısayol YöneticisiCompat
Amaç farklı olduğu için Intent.EXTRA_SHORTCUT_ID
kullanılamaz.
Gerekirse kimliği manuel olarak iletmeniz gerekir.
İletişim uygulamaları için kısayol kullanımını bildirme
Bir iletişim uygulaması geliştiriyorsanız Google Haberler'deki
Android Sharesheet, hem giden hem de gelen iletilerin kullanımını bildirerek.
Bunu yapmak için, ilgili kişiyi temsil eden görüşme kısayolunu
ShortcutManagerCompat.pushDynamicShortcut
.
Kısayol kullanımı ve özellik bağlamaları, Android 5.0 ile geriye dönük uyumludur. (API 21).
Giden iletiler için kısayol kullanımını raporla
Kullanıcı tarafından gönderilen iletilerin raporlama kullanımı, işlevsel olarak "gönder" düğmesini tıklayarak düğmesini tıklayın.
Kullanım raporlamasını tetiklemek için kısayolda özellik bağlamalarını belirtin
ShortcutInfoCompat.Builder#addCapabilityBinding
tarihine kadar
actions.intent.SEND_MESSAGE
özelliği var.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
Giden mesaj bir grup sohbeti içinse Audience
öğesini de eklemeniz gerekir
recipient
gibi parametre değeri
özellik ile ilişkilidir.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", listOf("Audience")).build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", Arrays.asList("Audience")) .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
Gelen iletiler için kısayol kullanımını raporla
Kullanıcı SMS gibi bir mesaj aldığında kullanım raporlamasını tetiklemek için
sohbet mesajı, e-posta veya bildirimler gibi
bağlama ve devre dışı bırakmaya
ShortcutInfoCompat.Builder#addCapabilityBinding
-
actions.intent.RECEIVE_MESSAGE
özelliği.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
Gelen mesaj bir grup sohbetinden geliyorsa Audience
özelliğini de eklemeniz gerekir
sender
türü için parametre değeri
beceriyle ilişkilidir.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", listOf("Audience")).build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", Arrays.asList("Audience")) .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
Hem Paylaşım Kısayolları hem de Seçici Hedeflerini sağlamak için AndroidX'i kullanın
AndroidX uyumluluk kitaplığıyla çalışabilmek için uygulamanın manifest dosyası
meta-veri seçici-hedef-hizmeti ve intent filtreleri setini içermelidir. Görüntüleyin
mevcut ChooserTargetService
Doğrudan Paylaşım API'si.
Bu hizmet, uyumluluk kitaplığında zaten bildirildiği için kullanıcı Uygulamanın manifest dosyasında hizmeti beyan etmesi gerekmez. Ancak, hizmetle ilgili paylaşım etkinliği bir seçici hedef olarak dikkate alınmalıdır için kullanılır.
Aşağıdaki örnekte, ChooserTargetService
uygulanması
androidx.core.content.pm.ChooserTargetServiceCompat
, zaten tanımlanmış
AndroidX'te:
<activity android:name=".SendMessageActivity" android:label="@string/app_name" android:theme="@style/SharingShortcutsDialogTheme"> <!-- This activity can respond to Intents of type SEND --> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> <!-- Only needed if you import the sharetarget AndroidX library that provides backwards compatibility with the old DirectShare API. The activity that receives the Sharing Shortcut intent needs to be taken into account with this chooser target provider. --> <meta-data android:name="android.service.chooser.chooser_target_service" android:value="androidx.sharetarget.ChooserTargetServiceCompat" /> </activity>
Kısayolları paylaşmayla ilgili SSS
Kısayol kullanım verileri nasıl saklanıyor ve cihazdan çıkıyor mu?
Kısayollar tamamen cihaz üzerinde, sistem verileri dizininde bir şifrelenmiş disk bölümü Kısayollardaki bilgiler (ör. simge, amaç, kişiler ve kaynakların isimlerine ve isimlerine yalnızca sistem hizmetleri ve aynı uygulama tarafından da yürütülür.
Doğrudan Paylaşım'ın geçmişi nedir?
Android 6.0'da (API düzeyi 23) Doğrudan Paylaşım'ı kullanıma sunarak uygulamaların,
ChooserTargetService
aracılığıyla ChooserTarget
nesne sağlayın. Sonuçlar (önceki değeri)
Bu durum, hedeflerin daha uzun sürede yüklenebilmesine neden oluyor.
Android 10'da (API düzeyi 29), ChooserTargetService
Direct'in yerini aldık.
Yeni Paylaşım Kısayolları API'si ile API'leri paylaşın. Sonuçları almak yerine
Share Kısayollar API'si isteğe bağlı olarak uygulamaların doğrudan paylaşım özelliğini kullanmasına olanak tanır.
önceden takip etmeniz gerekir. Bu, Doğrudan Paylaşım alma sürecini hızlı bir şekilde hızlandırdı:
göz önünde bulundurun. ChooserTargetService
Doğrudan Paylaşım
mekanizma çalışmaya devam eder, ancak sistem sağlanan hedefleri sıralar.
çok daha düşük bir değere sahip.
Android 11 (API düzeyi 30), ChooserTargetService
hizmetini kullanımdan kaldırdı ve
Doğrudan Paylaşım hedefleri sağlamanın tek yolu Kısayollar API'sini paylaşmaktır.
Paylaşım hedefleri için yayınlanan kısayolların başlatıcıdan farkı nedir? kısayollar (Chrome'da uygulama simgelerine uzun süre basıldığında kullanılan tipik kısayolların kullanımı) başlatıcı)?
"Paylaşım hedefi" için yayınlanan tüm kısayollar aynı zamanda bir başlatıcı kısayoludur ve uygulamanızın simgesine uzun basıldığında menüde görüntülenir. İlgili içeriği oluşturmak için kullanılan etkinlik başına maksimum kısayol sayısı sınırı, toplam bir uygulamanın yayınladığı kısayollar (paylaşma hedefleri ve eski başlatıcı kısayolları birlikte) sunulur.
Yayınlanması gereken paylaşım kısayollarının sayısıyla ilgili yol gösterici bilgiler nelerdir?
Paylaşım kısayollarının sayısı aynı dinamik
kısayollar şunun üzerinden kullanılabilir:
getMaxShortcutCountPerActivity(android.content.Context)
. Bir kullanıcı herhangi bir videoyu yayınlayabilir.
kullanabilirsiniz, ancak paylaşım kısayollarının görünür olabileceğini
uygulama başlatıcıda ve paylaşım sayfasında uzun basın. Çoğu uygulama başlatıcıda
uzun basıldığında dikey modda en fazla dört veya beş kısayol gösterilir ve
yatay modda sekiz. Bunu göster
SSS
paylaşma hakkında daha fazla bilgi ve kılavuza bakın.