Android Q: Sharing Shortcuts

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.



  • <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.



Adım 3:


Launcher olarak tanımladığımız aktiviteye res/xml altında tanımladığmız shortcuts referansını <meta-data> etiketi içerisinde ekliyoruz.



Adım 4:


Uygulamamız üzerinden diğer uygulamalar ile veri paylaşabilmek için paylaşım menüsünün çağrılmasını tetikleyecek bir yapıya ihtiyacımız var. Bu sebeple paylaş butonuna basıldığında çağrılacak olan Intent'i ACTION_SEND olarak tanımlıyoruz ve paylaşılacak içeriğimiz metin olacağı için type kısmını text/plain olarak belirtiyoruz. Son olarak da input olarak aldığımız metin verisini Intent'e ekleyip Intent'i tetikliyoruz.



Adım 5:


Paylaşım sayfası açıldığında kısayolların görülebilir olması için her kısayolu ekliyoruz.


  • setShortLabel kısayol metnini belirtir.

  • setPerson, kısayol için gerekli olan ilgili kişiyi ekler. (birden fazla kişi eklemek istersek setPersons kullanabiliriz).

  • Person oluştururken setKey metodundaki id değeri her kısayol için eşsiz olmalıdır.

  • setIcon, kısayol için gösterilecek ikonun resmini belirtir.

  • setCategories, res/xml/shortcuts.xml'de tanımlanan bir veya birden fazla kategoriyi belirtir.

  • setLongLived, kısayolun, dinamik kısayol olarak kaldırıldığında dahi sistem servisleri tarafından önbellekten erişebilir halde olacağını belirtir.


Demo


Test etmek için Chrome'dan bir metin paylaşmayı denediğinizde aşağıdaki gibi bir ekran göreceksiniz. Eklediğimiz 3 kişi kısayolu ve uygulamamız paylaşım menüsünde bu şekilde görünüyor.



Paylaşım menüsünden uygulamamızı seçtiğimizde paylaşılacak metin içeriği ShareActivity için tanımladığımız sayfaya aşağıdaki gibi yönlendirilir.




Ayrıca başka uygulamalarla veri paylaşımı yapmak istediğimizde, uygulama çalıştırıldığında açılan sayfada, paylaşılacak metin girilir ve paylaş butonuna basıldığında çıkan menüden istenen uygulama ile paylaşım yapılabilir.



Son olarak ise uygulama simgesine uzun süre basılı tuttuğumuzda eklediğimiz paylaşım kısayolları aşağıdaki şekilde görülebilir. Bu kısayollardan herhangi birini seçtiğimizde ise paylaşım menüsünün açıldığını görebiliriz.




Github repository: https://github.com/serkansorman/Android-Q-Sharing-Shortcuts


Referans ve daha fazla detay için:

https://developer.android.com/training/sharing

https://proandroiddev.com/android-q-sharing-shortcuts-3be59ea2f4ec


#sharingshortcuts #sharesheet #androidQ #android

0 yorum

Son Paylaşımlar

Hepsini Gör

Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
imageedit_2_9667998092.png
JetBrains Hakkında Detaylı Bilgi Alın

© 2021 by mobiler.dev

Kurumsal Yazar Hesapları

adesso.png
mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın