Lọc chế độ hiển thị gói trên Android
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Khi một ứng dụng nhắm đến Android 11 (API cấp độ 30) trở lên và truy vấn để biết thông tin về các ứng dụng khác được cài đặt trên một thiết bị, theo mặc định, hệ thống sẽ lọc thông tin này. Hành vi lọc này có nghĩa là ứng dụng của bạn
không thể phát hiện tất cả ứng dụng đã cài đặt trên thiết bị, giúp giảm thiểu
thông tin nhạy cảm tiềm ẩn mà ứng dụng của bạn có thể truy cập nhưng không cần
thực hiện trường hợp sử dụng.
Ngoài ra, phạm vi xem gói được lọc giúp cửa hàng ứng dụng như Google Play đánh giá quyền riêng tư và bảo mật mà ứng dụng của bạn cung cấp cho người dùng. Ví dụ: Google Play coi danh sách các ứng dụng đã cài đặt là dữ liệu cá nhân và nhạy cảm của người dùng.
Phạm vi hiển thị của ứng dụng bị hạn chế ảnh hưởng đến kết quả được trả về bằng các phương thức cung cấp
thông tin về các ứng dụng khác, chẳng hạn như
queryIntentActivities()
,
getPackageInfo()
,
và
getInstalledApplications()
.
Phạm vi hiển thị bị hạn chế cũng ảnh hưởng đến khả năng tương tác rõ ràng với các ứng dụng khác, như khởi động dịch vụ của một ứng dụng khác.
Một số gói có thể tự động
hiển thị. Ứng dụng của bạn luôn có thể
nhận diện các gói này trong truy vấn của mình về các ứng dụng đã được cài khác. Để xem các gói
khác, khai báo rằng ứng dụng của bạn cần tăng phạm vi hiển thị
gói bằng phần tử
<queries>
. Trang trường hợp
sử dụng cung cấp các ví dụ về cách bạn
có thể mở rộng một cách có chọn lọc khả năng hiển thị gói. Quy trình làm việc được mô tả tại đó cho phép
bạn thực hiện các trường hợp tương tác phổ biến trong ứng dụng, đồng thời bảo vệ quyền riêng tư của người dùng.
Trong những trường hợp hiếm hoi khi phần tử <queries>
không cung cấp phạm vi xem gói thích đáng, bạn có thể sử dụng quyền QUERY_ALL_PACKAGES
. Nếu bạn phát hành
ứng dụng trên Google Play, việc sử dụng quyền này của ứng dụng
cần được phê duyệt.
Trang về
kiểm thử hành vi hiển thị gói
sẽ đưa ra các đề xuất về cách kiểm thử các thay đổi về hành vi dựa trên chế độ hiển thị gói
khi ứng dụng của bạn dựa vào hoạt động tương tác với các ứng dụng khác.
Tài nguyên khác
Để tìm hiểu thêm về phạm vi hiển thị gói trên Android, xem các tài liệu sau:
Bài đăng trên blog
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-08-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 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."]]