فلترة مستوى ظهور الحِزم على Android
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
عندما يستهدف تطبيق الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث ويطلب معلومات عن التطبيقات الأخرى المثبَّتة على الجهاز، يفلتر النظام هذه المعلومات تلقائيًا. يعني سلوك الفلترة هذا أنّه لا يمكن لتطبيقك رصد جميع التطبيقات المثبَّتة على الجهاز، ما يساعد في الحدّ من المعلومات التي يُحتمل أن تكون حساسة والتي يمكن لتطبيقك الوصول إليها ولكنّه لا يحتاج إليها لتنفيذ حالات الاستخدام.
بالإضافة إلى ذلك، تساعد ميزة "فلترة إذن الوصول إلى الحِزم" متاجر التطبيقات، مثل Google Play، في تقييم الخصوصية والأمان اللذين يوفّرهما تطبيقك للمستخدمين. على سبيل المثال، يعتبر Google Play قائمة التطبيقات المثبَّتة بيانات مستخدمين شخصية وحسّاسة.
يؤثّر نطاق ظهور التطبيق المحدود في النتائج التي تعرضها الطرق التي تقدّم معلومات حول التطبيقات الأخرى، مثل
queryIntentActivities()
وgetPackageInfo()
وgetInstalledApplications()
.
يؤثّر مستوى الظهور المحدود أيضًا في التفاعلات الواضحة مع التطبيقات الأخرى، مثل بدء خدمة تطبيق آخر.
تكون بعض الحِزم مرئية
تلقائيًا. يمكن لتطبيقك دائمًا رصد هذه الحِزم في طلبات البحث عن التطبيقات الأخرى المثبَّتة. لعرض حِزم أخرى، عليك توضيح حاجة تطبيقك إلى إذن وصول أكبر إلى الحِزم باستخدام العنصر <queries>
. تقدّم صفحة حالات الاستخدام أمثلة على كيفية توسيع نطاق إذن الوصول إلى الحِزم بشكل انتقائي. تسمح لك إجراءات سير العمل الموضّحة هناك بتنفيذ سيناريوهات التفاعل الشائعة مع التطبيقات مع الحفاظ على خصوصية المستخدم.
في الحالات النادرة التي لا يوفّر فيها العنصر <queries>
إمكانية الوصول إلى الحزمة بشكل كافٍ، يمكنك استخدام الإذن QUERY_ALL_PACKAGES
. إذا نشرت تطبيقك على Google Play، سيخضع استخدام تطبيقك لهذا الإذن للموافقة.
تقدّم صفحة اختبار سلوك إذن الوصول إلى الحِزم اقتراحات حول كيفية اختبار تغييرات السلوك استنادًا إلى إذن الوصول إلى الحِزم عندما يعتمد تطبيقك على التفاعلات مع التطبيقات الأخرى.
مراجع إضافية
لمزيد من المعلومات حول إذن الوصول إلى حزمة على Android، يمكنك الاطّلاع على المواد التالية:
مشاركات المدونة
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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."]]