Android Package Visibility Nedir?

Bu yazımda Android Package Visibility nedir, ne tür kısıtlamalar getirir bunları konuşacağız. Android 11‘in çıkışı ile birlikte Google, Android uygulamaların yüklü olduğu cihazlardaki diğer Android uygulamalarla olan etkileşimlerine Android Package Visibility ile birlikte sınırlamalar getirdi. <queries> elementini kullanarak yazdığınız uygulamanın hangi uygulamalarla etkileşime girebileceğini AndroidManifest dosyası içerisinde belirtiyorsunuz.

Peki Google neden böyle bir özelliği Android 11 ve sonrası ( API level 30 ) için zorunlu tuttu? Aslında bunun bir güvenlik güncellemesi olduğunu söylemek mümkün. Zararlı yazılımların tespiti ve kullanıcıların yükledikleri uygulamanın hangi uygulamalar ile etkileşime geçtiğini görebilmesi açısından önemli bir özellik, aynı zamanda bir gereklilik.

Eğer geliştireceğiniz uygulamanın hedef SDK versiyonu 30 ise <queries> elementini eklemeniz zorunlu.

Örneğin bir uygulamanın Manifest dosyasına <queries> eklenmiş hali:

<manifest package="com.example.app">   

<queries>

<!-- Specific apps you interact with, eg: -->

<package android:name="com.example.store" />
<package android:name="com.example.service" />

</queries>
...
</manifest>

Peki her uygulamanın paket adını tek tek eklemek istemiyorsanız ve güvenlik bariyerini aşmak istiyorsanız? Onun da bir yolu var!

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

Manifest dosyası içerisine bu izni ekleyerek, üçüncü parti uygulamalara ve tarayıcıya rahatlıkla yönlendirme yapabilirsiniz.