Uygulamanızı oluştururken, uygulamanızın etkileşime geçmesi gereken cihazdaki diğer uygulamaları göz önünde bulundurmanız önemlidir. Uygulamanız bunu hedefliyorsa Android 11 (API düzeyi 30) veya sonraki sürümlerde sistem, bazı uygulamaları uygulama otomatik olarak ancak filtreleri diğer uygulamalarda varsayılan olarak kullanılabilir. Bu kılavuzda, diğer uygulamaların uygulamanızda nasıl görüneceği açıklanmaktadır.
Uygulamanız Android 11 veya sonraki sürümleri hedefliyorsa ve otomatik olarak görünen uygulamalar dışındaki uygulamalarla etkileşime geçmesi gerekiyorsa uygulamanızın manifest dosyasına <queries>
öğesini ekleyin. <queries>
öğesinde, diğer uygulamaları aşağıdaki bölümlerde açıklandığı gibi paket adına, intent imzasına veya sağlayıcı yetkilisine göre belirtin.
Belirli paket adları
Sorgulamak veya etkileşimde bulunmak istediğiniz belirli uygulamaları biliyorsanız, örneğin
uygulamanızla entegre olan uygulamalar veya hizmetlerini kullandığınız uygulamalar,
<package>
kümesindeki paket adları
<queries>
öğesinin içindeki öğeler:
<manifest package="com.example.game"> <queries> <package android:name="com.example.store" /> <package android:name="com.example.services" /> </queries> ... </manifest>
Kitaplıktaki bir barındırıcı uygulamayla 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 aynı
işlevleri ekleyin.
Kitaplığınız, bir ana uygulamayla iletişim (ör. bağlı hizmet kullanımı) içeriyorsa ana uygulamanı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.
Kitaplığınızı kullanan arama uygulaması otomatik olarak
sonuç olarak ana makine uygulamasına görünür
bahsedeceğim.
Amaç filtresi imzasıyla eşleşen paketler
Uygulamanızın, farklı kullanıcılara hizmet veren bir grup uygulamayı sorgulaması veya
ama paketin isimlerini
tam olarak bilemeyebilirsiniz,
dahil. Bu durumda, <queries>
öğenize intent filtresi imzaları ekleyebilirsiniz. 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ıyan 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 karakter (*
) olarak ayarlarmış 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, genel joker karakteri (*
)
birkaç özelliğe sahip olabilir:
<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.- Bir
<data>
öğesininhost
özelliği.
Önceki listede aksi belirtilmedikçe sistem, metin ve joker karakterlerin (ör. prefix*
) bir karışımını desteklemez.
Belirli bir yetkilinin kullanıldığı paketler
Bir içeriği sorgulamanız gerekiyorsa
sağlayıcı ancak
yoksa belirli paket adlarını bilmiyorsanız
gösterildiği gibi bir <provider>
öğesinde
aşağıdaki snippet'te:
<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. Şuranın içinde:
<queries>
öğesi tanımlarsanız 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)
Nadiren de olsa, uygulamanızın içerdikleri bileşenlerden bağımsız olarak bir cihazda yüklü tüm uygulamaları sorgulamasının veya bunlarla etkileşim kurmasının gerekmesi mümkündür. Uygulamanızın şunları yapmasına izin vermek için:
yüklü diğer tüm uygulamaları görebilirsiniz. Sistem,
QUERY_ALL_PACKAGES
izni gerekir.
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. Alıcı: Kullanıcı gizliliğine saygı gösteriyorsanız, uygulamanız gereken en düşük paket miktarını uygulamanızın çalışması için gerekli görünürlüğü gerektirir.
Bu Google Play politikası güncellemesi, QUERY_ALL_PACKAGES
iznine ihtiyaç duyan uygulamalar için yönergeler sunar.