סינון לפי הרשאות גישה של חבילות ב-Android
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
כשאפליקציה מטרגטת ל-Android 11 (רמת API 30) ומעלה ומבצעת שאילתה לגבי מידע על האפליקציות האחרות שמותקנות במכשיר, המערכת מסננת את המידע הזה כברירת מחדל. התנהגות הסינון הזו אומרת שהאפליקציה לא יכולה לזהות את כל האפליקציות שמותקנות במכשיר, וכך מצטמצם המידע הרגיש הפוטנציאלי שהאפליקציה יכולה לגשת אליו אבל לא צריכה אותו כדי למלא את תרחישי השימוש שלה.
בנוסף, חשיפה מסוננת של חבילות עוזרת לחנויות אפליקציות כמו Google Play להעריך את הפרטיות והאבטחה שהאפליקציה מספקת למשתמשים. לדוגמה, ב-Google Play, רשימת האפליקציות המותקנות נחשבת נתונים אישיים ורגישים של משתמשים.
הרשאות גישה מוגבלות לאפליקציה משפיעות על התוצאות שמוחזרות על ידי שיטות שנותנות מידע על אפליקציות אחרות, כמו queryIntentActivities()
, getPackageInfo()
ו-getInstalledApplications()
.
הנראות המוגבלת משפיעה גם על אינטראקציות מפורשות עם אפליקציות אחרות, כמו הפעלת שירות של אפליקציה אחרת.
חלק מהחבילות גלויות באופן אוטומטי. האפליקציה שלכם תמיד יכולה לזהות את החבילות האלה בשאילתות שלה לגבי אפליקציות אחרות שמותקנות במכשיר. כדי להציג חבילות אחרות, צריך להצהיר שהאפליקציה שלך צריכה הרשאת גישה מוגברת לחבילות באמצעות האלמנט <queries>
. בדף תרחישי שימוש יש דוגמאות לאופן שבו אפשר להרחיב את הרשאות הגישה לחבילה באופן סלקטיבי. תהליכי העבודה שמתוארים שם מאפשרים לכם להשלים תרחישים נפוצים של אינטראקציות עם אפליקציות תוך שמירה על פרטיות המשתמשים.
במקרים נדירים שבהם הרכיב <queries>
לא מספק מספיק נראות של החבילה, אפשר להשתמש בהרשאה QUERY_ALL_PACKAGES
. אם אתם מפרסמים את האפליקציה ב-Google Play, השימוש בהרשאה הזו דורש אישור.
בדף בנושא בדיקת התנהגות הנראות של חבילות יש הצעות לבדיקת שינויים בהתנהגות על סמך נראות החבילות, אם האפליקציה שלכם מסתמכת על אינטראקציות עם אפליקציות אחרות.
מקורות מידע נוספים
כדי לקבל מידע נוסף על חשיפת חבילות ב-Android, אפשר לעיין בחומרים הבאים:
פוסטים בבלוג
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-27 (שעון UTC).
[[["התוכן קל להבנה","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 (שעון 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."]]