Filtrowanie widoczności pakietów na Androidzie
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Gdy aplikacja jest kierowana na Androida 11 (API na poziomie 30) lub nowszego i wysyła zapytanie o informacje o innych aplikacjach zainstalowanych na urządzeniu, system domyślnie filtruje te informacje. To filtrowanie oznacza, że aplikacja nie może wykryć wszystkich aplikacji zainstalowanych na urządzeniu, co pomaga zminimalizować potencjalnie poufne informacje, do których aplikacja może mieć dostęp, ale nie potrzebuje ich do realizacji swoich przypadków użycia.
Filtrowana widoczność pakietu pomaga też sklepom z aplikacjami, takim jak Google Play, ocenić poziom prywatności i bezpieczeństwa, jaki zapewnia Twoja aplikacja. Na przykład Google Play uważa listę zainstalowanych aplikacji za dane osobowe i wrażliwe.
Ograniczona widoczność aplikacji wpływa na wyniki zwracane przez metody, które przekazują informacje o innych aplikacjach, takie jak queryIntentActivities()
, getPackageInfo()
i getInstalledApplications()
.
Ograniczona widoczność wpływa też na wyraźne interakcje z innymi aplikacjami, takie jak uruchamianie usługi innej aplikacji.
Niektóre pakiety są widoczne automatycznie. Aplikacja może zawsze wykrywać te pakiety w zapytaniach dotyczących innych zainstalowanych aplikacji. Aby wyświetlić inne pakiety, zadeklaruj, że Twoja aplikacja potrzebuje większej widoczności pakietów za pomocą elementu <queries>
. Na stronie przypadki użycia znajdziesz przykłady selektywnego zwiększania widoczności pakietów. Opisane tam procesy umożliwiają realizację typowych scenariuszy interakcji z aplikacją przy jednoczesnej ochronie prywatności użytkowników.
W rzadkich przypadkach, gdy element <queries>
nie zapewnia odpowiedniej widoczności pakietu, możesz użyć uprawnienia QUERY_ALL_PACKAGES
. Jeśli opublikujesz aplikację w Google Play, korzystanie z tego uprawnienia przez aplikację podlega zatwierdzeniu.
Na stronie dotyczącej testowania zachowania widoczności pakietu znajdziesz sugestie, jak testować zmiany zachowania na podstawie widoczności pakietu, gdy Twoja aplikacja zależy od interakcji z innymi aplikacjami.
Dodatkowe materiały
Więcej informacji o widoczności pakietów na Androidzie znajdziesz w tych materiałach:
Posty na blogu
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-08-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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."]]