Pemfilteran visibilitas paket di Android
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Jika aplikasi menargetkan Android 11 (API level 30) atau yang lebih tinggi dan membuat kueri
informasi tentang aplikasi lain yang diinstal di perangkat, sistem akan
memfilter informasi ini secara default. Perilaku pemfilteran ini berarti bahwa aplikasi Anda
tidak dapat mendeteksi semua aplikasi yang diinstal pada perangkat, yang membantu meminimalkan
informasi yang berpotensi sensitif yang dapat diakses oleh aplikasi Anda, tetapi tidak perlu
memenuhi kasus penggunaannya.
Selain itu, visibilitas paket yang difilter membantu
app store seperti Google Play menilai privasi dan keamanan yang diberikan oleh aplikasi
kepada pengguna. Misalnya, Google Play menganggap daftar aplikasi terinstal sebagai
data pengguna
yang bersifat pribadi dan sensitif.
Visibilitas aplikasi terbatas memengaruhi hasil yang ditampilkan oleh metode yang memberikan
informasi tentang aplikasi lain, seperti
queryIntentActivities()
,
getPackageInfo()
,
dan
getInstalledApplications()
.
Visibilitas terbatas juga memengaruhi interaksi eksplisit dengan aplikasi lain, seperti
memulai layanan aplikasi lain.
Beberapa paket otomatis
terlihat. Aplikasi Anda selalu dapat
mendeteksi paket tersebut dalam kuerinya untuk aplikasi terinstal lainnya. Untuk melihat paket lainnya,
deklarasikan kebutuhan aplikasi Anda untuk meningkatkan
visibilitas paket menggunakan
elemen <queries>
. Halaman kasus
penggunaan memberikan contoh bagaimana Anda
dapat memperluas visibilitas paket secara selektif. Alur kerja yang dijelaskan di sana memungkinkan
Anda memenuhi skenario interaksi aplikasi umum sekaligus melindungi privasi pengguna.
Dalam kasus yang jarang terjadi, saat elemen <queries>
tidak memberikan visibilitas paket yang memadai,
Anda dapat menggunakan izin QUERY_ALL_PACKAGES
. Jika Anda memublikasikan
aplikasi di Google Play, penggunaan izin ini oleh aplikasi Anda
akan memerlukan persetujuan.
Halaman tentang
menguji perilaku visibilitas paket
menawarkan saran tentang cara menguji perubahan perilaku berdasarkan visibilitas paket
saat aplikasi bergantung pada interaksi dengan aplikasi lain.
Referensi lainnya
Untuk mempelajari visibilitas paket di Android lebih lanjut, lihat materi berikut:
Postingan blog
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-27 UTC."],[],[],null,["# Package visibility filtering on Android\n\nWhen an app targets Android 11 (API level 30) or higher and queries for\ninformation about the other apps that are installed on a device, the system\nfilters this information by default. This filtering behavior means that your app\ncan't detect all the apps installed on a device, which helps minimize the\npotentially sensitive information that your app can access but doesn't need\nto fulfill its use cases.\n\nAlso, filtered package visibility helps app\nstores like Google Play assess the privacy and security that your app provides\nfor users. For example, Google Play considers the list of installed apps to be\n[personal and sensitive user\ndata](https://support.google.com/googleplay/android-developer/answer/10144311#zippy=%2Cexamples-of-common-violations).\n\nLimited app visibility affects the results returned by methods that give\ninformation about other apps, such as\n[`queryIntentActivities()`](/reference/android/content/pm/PackageManager#queryIntentActivities(android.content.Intent,%20int)),\n[`getPackageInfo()`](/reference/android/content/pm/PackageManager#getPackageInfo(java.lang.String,%20int)),\nand\n[`getInstalledApplications()`](/reference/android/content/pm/PackageManager#getInstalledApplications(int)).\nThe limited visibility also affects explicit interactions with other apps, such\nas starting another app's service.\n\nSome packages are [visible\nautomatically](/training/package-visibility/automatic). Your app can always\ndetect these packages in its queries for other installed apps. To view other\npackages, [declare your app's need for increased package\nvisibility](/training/package-visibility/declaring) using the\n[`\u003cqueries\u003e`](/guide/topics/manifest/queries-element) element. The [use\ncases](/training/package-visibility/use-cases) page provides examples of how you\ncan selectively expand package visibility. The workflows described there allow\nyou to fulfill common app interaction scenarios while protecting user privacy.\n\nIn the rare cases where the `\u003cqueries\u003e` element doesn't provide adequate package\nvisibility, you can use the `QUERY_ALL_PACKAGES` permission. If you publish your\napp on Google Play, your app's use of this permission is\n[subject to approval](https://support.google.com/googleplay/android-developer/answer/10158779).\n\nThe page about\n[testing package visibility behavior](/training/package-visibility/testing)\noffers suggestions for how to test behavior changes based on package visibility\nwhen your app relies on interactions with other apps.\n\nAdditional resources\n--------------------\n\nTo learn more about package visibility on Android, view the following materials:\n\n### Blog posts\n\n- [Package visibility in\n Android 11](https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9), available on Medium."]]