Filtrado de visibilidad de paquetes en Android
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Cuando una app se orienta a Android 11 (nivel de API 30) o versiones posteriores y busca información sobre las otras apps que se instalaron en un dispositivo, el sistema filtra esta información de forma predeterminada. Este comportamiento de filtrado significa que tu app no puede detectar todas las apps instaladas en un dispositivo, lo que ayuda a minimizar la información potencialmente sensible a la que tu app puede acceder, pero no necesita cumplir con sus casos de uso.
Además, la visibilidad filtrada de paquetes permite que las tiendas de aplicaciones, como Google Play, evalúen la privacidad y la seguridad que tu app les brinda a los usuarios. Por ejemplo, Google Play considera que la lista de apps instaladas son datos personales y sensibles del usuario.
La visibilidad limitada de la app afecta los resultados que muestran los métodos que proporcionan información sobre otras apps, como queryIntentActivities()
, getPackageInfo()
y getInstalledApplications()
.
La visibilidad limitada también afecta las interacciones explícitas con otras apps, como cuando se pretende iniciar su servicio.
Algunos paquetes son visibles automáticamente. Tu app siempre puede detectar estos paquetes en sus búsquedas de otras apps instaladas. Para que tu app vea otros paquetes, declara la necesidad de tu app de aumentar la visibilidad de paquetes con el elemento <queries>
. En la página de casos de uso se proporcionan ejemplos de cómo puedes expandir la visibilidad del paquete de manera selectiva. Los flujos de trabajo descritos allí te permiten completar situaciones comunes de interacción de apps y proteger la privacidad del usuario al mismo tiempo.
En los casos poco comunes en los que el elemento <queries>
no brinda la visibilidad adecuada de paquetes, puedes usar el permiso QUERY_ALL_PACKAGES
. Si publicas tu app en Google Play, su uso de este permiso está sujeto a aprobación.
La página sobre cómo probar el comportamiento de visibilidad de paquetes ofrece sugerencias para probar los cambios en el comportamiento según la visibilidad de paquetes cuando tu app depende de interacciones con otras apps.
Recursos adicionales
Para obtener más información sobre la visibilidad de paquetes en Android, consulta los siguientes materiales:
Entradas de blog
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-08-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]