Uygulamanızı oluştururken cihazda, uygulamanızın etkileşimde bulunması gereken diğer uygulamaları dikkate almanız önemlidir. Uygulamanız Android 11 (API düzeyi 30) veya sonraki sürümleri hedefliyorsa sistem, bazı uygulamaları uygulamanıza otomatik olarak görünür hale getirir ancak diğer uygulamaları varsayılan olarak filtreler. Bu kılavuzda, bu diğer uygulamaları, uygulamanız için nasıl görünür hale getireceğiniz açıklanmaktadır.
Uygulamanız Android 11 veya sonraki bir sürümü hedefliyorsa ve otomatik olarak görünür olanlar dışındaki uygulamalarla etkileşimde bulunması gerekiyorsa <queries>
öğesini uygulamanızın manifest dosyasına ekleyin. <queries>
öğesinde, diğer uygulamaları aşağıdaki bölümlerde açıklandığı gibi paket adına göre, amaç imzasına göre veya sağlayıcı yetkilisine göre belirtin.
Belirli paket adları
Uygulamanızla entegre olan veya hizmetlerini kullandığınız uygulamalar gibi sorgulamak veya etkileşim kurmak istediğiniz belirli uygulamaları biliyorsanız bu uygulamaların paket adlarını <queries>
öğesinin içinde bir <package>
öğesi grubuna ekleyin:
<manifest package="com.example.game"> <queries> <package android:name="com.example.store" /> <package android:name="com.example.services" /> </queries> ... </manifest>
Kitaplıktaki ana makine uygulamasıyla iletişim kurma
Android kitaplığı geliştiriyorsanız AAR manifest dosyanıza bir <queries>
öğesi ekleyerek paket görünürlüğü ihtiyaçlarınızı belirtebilirsiniz. Bu <queries>
öğesi, uygulamaların kendi manifest dosyalarında tanımlayabileceği öğeyle aynı işleve sahiptir.
Kitaplığınız, bağlı hizmet gibi bir ana makine uygulamasıyla iletişim içeriyorsa ana makine uygulamasının paket adını belirten bir <package>
öğesi ekleyin:
<!-- Place inside the <queries> element. --> <package android:name=PACKAGE_NAME />
Bu beyanı ekleyerek ana uygulamanın yüklü olup olmadığını kontrol edebilir ve bindService()
çağrısı yaparak uygulamayla etkileşim kurabilirsiniz.
Bu etkileşim sonucunda, kitaplığınızı kullanan arama uygulaması ana uygulamaya otomatik olarak görünür.
Amaç filtresi imzasıyla eşleşen paketler
Uygulamanızın belirli bir amaca hizmet eden bir dizi uygulamayı sorgulaması veya bu uygulamalarla etkileşime geçmesi gerekebilir ancak dahil edilecek paket adlarını bilmiyor olabilirsiniz. Bu durumda, <queries>
öğenizde amaç filtresi imzalarını listeleyebilirsiniz. Ardından uygulamanız, eşleşen <intent-filter>
öğelerine sahip uygulamaları keşfedebilir.
Aşağıdaki kod örneğinde, uygulamanın JPEG resim paylaşımını destekleyen diğer yüklü uygulamaları görmesine olanak tanıyacak bir <intent>
öğesi gösterilmektedir:
<manifest package="com.example.game"> <queries> <intent> <action android:name="android.intent.action.SEND" /> <data android:mimeType="image/jpeg" /> </intent> </queries> ... </manifest>
<intent>
öğesinin birkaç kısıtlaması vardır:
- Tam olarak bir
<action>
öğesi eklemeniz gerekir. <data>
öğesindepath
,pathPrefix
,pathPattern
veyaport
özelliklerini kullanamazsınız. Sistem, her bir özelliğin değerini genel joker karaktere (*
) ayarlamışsınız gibi davranır.<data>
öğesininmimeGroup
özelliğini kullanamazsınız.Tek bir
<intent>
öğesinin<data>
öğelerinde aşağıdaki özelliklerin her birini en fazla bir kez kullanabilirsiniz:mimeType
scheme
host
Bu özellikleri birden fazla
<data>
öğesine dağıtabilir veya tek bir<data>
öğesinde kullanabilirsiniz.
<intent>
öğesi, birkaç özelliğin değeri olarak genel joker karakteri (*
) destekler:
<action>
öğesininname
özelliği.- Bir
<data>
öğesinin (image/*
)mimeType
özelliğinin alt türü. - Bir
<data>
öğesinin (*/*
)mimeType
özelliğinin türü ve alt türü. <data>
öğesininscheme
özelliği.<data>
öğesininhost
özelliği.
Önceki listede aksi belirtilmedikçe sistem, metin ve joker karakterlerin (ör. prefix*
) bir karışımını desteklemez.
Belirli bir yetkiliyi kullanan paketler
Bir içerik sağlayıcıyı sorgulamanız gerekiyorsa ancak belirli paket adlarını bilmiyorsanız sağlayıcı yetkisini aşağıdaki snippet'te gösterildiği gibi bir <provider>
öğesinde belirtebilirsiniz:
<manifest package="com.example.suite.enterprise"> <queries> <provider android:authorities="com.example.settings.files" /> </queries> ... </manifest>
Sağlayıcı yetkilerini tek bir <queries>
öğesinde belirtebilirsiniz. <queries>
öğesi içinde bir veya daha fazla <provider>
öğesi tanımlayabilirsiniz. <provider>
öğesi, tek bir sağlayıcı yetkilisi veya sağlayıcı yetkililerinin noktalı virgül ile ayrılmış bir listesini içerebilir.
Tüm uygulamalar (önerilmez)
Nadir durumlarda uygulamanızın, içerdikleri bileşenlerden bağımsız olarak bir cihazda yüklü tüm uygulamaları sorgulaması veya bunlarla etkileşimde bulunması gerekebilir. Sistem, uygulamanızın diğer tüm yüklü uygulamaları görmesine izin vermek için QUERY_ALL_PACKAGES
iznini verir.
QUERY_ALL_PACKAGES
izninin eklenmesi uygun olan bazı kullanım alanlarına örnekler:
- Erişilebilirlik uygulamaları
- Tarayıcılar
- Cihaz yönetimi uygulamaları
- Güvenlik uygulamaları
- Virüsten korunma uygulamaları
Ancak genellikle otomatik olarak görünen uygulama grubuyla etkileşime geçerek ve uygulamanızın erişmesi gereken diğer uygulamaları manifest dosyanızda açıklayarak uygulamanızın kullanım alanlarını karşılayabilirsiniz. Kullanıcı gizliliğine saygı göstermek için uygulamanız, çalışması için gereken en az paket görünürlüğü istemelidir.
Bu Google Play politikası güncellemesi, QUERY_ALL_PACKAGES
iznine ihtiyaç duyan uygulamalar için yönergeler sunar.