Android Q: Sharing Shortcuts

Güncelleme tarihi: 21 Ara 2021

SharingShortcuts, uygulamalar arasında veri (metin, görüntü ve dosya vb.) aktarımına olanak sağlar. Android Sharesheet üzerinden uygulamamıza başka uygulamalardan veri gönderebilir ve alabiliriz. Herhangi bir uygulamadan veri paylaşımı yapmak istenildiğinde karşılaşılan Sharesheet (Paylaşım Menüsü) aşağıdaki gibidir.




Uygulamalar arası veri paylaşımı Android M versiyonuyla birlikte gelen "Direct Share" ile sağlanırken yerini Android Q ile beraber gelen "Sharing Shortcuts" a bıraktı. Android Q ve üzeri sürümlerde, Direct Share çalışmaya devam ediyor, fakat Paylaşım menüsü üzerinde yüksek önceliğe sahip olan taraf Sharing Shortcuts API'dir.


Direct Share vs Sharing Shortcuts


Direct Share özelliğinde paylaşım hedefleri listesi, kullanıcı paylaş seçeneğine bastığında hazırlanırken, Sharing Shortcuts ile bu listenin uygulama ilk başladığında yüklenmesi sağlanır. Böylece yeni API ile paylaşım menüsünün daha hızlı hazırlanması sağlanarak eski API ile aralarında büyük bir hız farkı oluşturulduğu görülebilir.

Ayrıca Direct Share API'de ChooserTargetService sınıfı için bir miktar kod yazılması gerekirken, Sharing Shortcut'ta böyle bir implementasyon yapılmasına gerek duyulmamaktadır.


Geliştirme:


Adım 1:


Önclikle res/xml altına oluşturduğumuz shortcuts.xml üzerinde "share target" öğesini tanımlıyoruz.


<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <share-target android:targetClass="com.example.sharingshortcuts.ShareActivity">
        <data android:mimeType="text/plain" />
        <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" />
    </share-target>
</shortcuts>

  • <share-target> etiketi kısayolu tanımlar ve hedef sınıfımız olan ShareActivity tarafından text/plain türüne yanıt verileceğini belirtir.

  • <data> etiketi, paylaşılan içeriğin türünü temsil eder.

  • <category> etiketi, uygulamanın yayınlanan kısayollarını paylaşım hedefi tanımıyla eşleştirmek için kullanılır. Bu etiket değeri isteğe bağlı olarak değiştirilebilir. Ayrıca bir <share-target> öğesi birden fazla <category> öğesini içerebilir.


Adım 2:


AndroidManifest.xml üzerinde tanımladığımız ShareActivity sınıfında, bu aktivitenin SEND aksiyonunda olan ve text/plain türünde içeriğe sahip "Intentlere" yanıt verebileceğini belirtiyoruz.


Ayrıca ShareTarget androidx kütüphanesini dahil ettiğimizde <meta-data> etiketini aşağıdaki şekilde eklememiz gerekiyor. Böylece hedef aktivitemizin ChooserTargetProvider olarak dikkate alınmasını sağlamış oluyoruz.


<activity android:name=".ShareActivity">

    <intent-filter