הצהרה על צורכי הרשאות גישה לחבילה

כשיוצרים את האפליקציה, חשוב לשקול את שאר האפליקציות במכשיר שהאפליקציה צריכה לקיים איתם אינטראקציה. אם האפליקציה מטרגטת Android 11 (רמת API 30) ואילך, המערכת מגדירה אפליקציות מסוימות כגלויות אפליקציה באופן אוטומטי, אבל היא מסננת כברירת מחדל. במדריך הזה מוסבר איך להציג את האפליקציות האחרות לאפליקציה.

אם האפליקציה מטרגטת ל-Android 11 ואילך וצריך לקיים אינטראקציה באפליקציות אחרות מלבד אלו שמוצגות באופן אוטומטי, אלמנט <queries> באפליקציה קובץ מניפסט. בתוך הרכיב <queries>, מציינים את האפליקציות האחרות לפי שם החבילה, לפי חתימת Intent, או על ידי רשות הספק, כפי שמתואר בסעיפים הבאים: .

שמות ספציפיים של חבילות

אם אתם יודעים באילו אפליקציות ספציפיות אתם רוצים לשלוח שאילתות או לבצע פעולות, למשל אפליקציות שמשתלבות עם האפליקציה שלכם או אפליקציות שאתם משתמשים בהן בשירותים האלה, שמות של חבילות בקבוצה של <package> רכיבים שבתוך הרכיב <queries>:

<manifest package="com.example.game">
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
    ...
</manifest>

תקשורת עם אפליקציה מארחת בספרייה

אם אתם מפתחים ספריית Android, תוכלו להצהיר על צורכי הרשאות הגישה של החבילה שלכם על ידי הוספת רכיב <queries> במניפסט של AAR . לרכיב <queries> הזה יש את אותו פונקציונליות בתור אלמנט שאפליקציות יכולות להצהיר עליו במניפסטים שלהן.

אם הספרייה כוללת תקשורת עם אפליקציה מארחת, למשל שימוש בגבול: Service, כוללים רכיב <package> מציין את שם החבילה של האפליקציה המארחת:

<!-- Place inside the <queries> element. -->
<package android:name=PACKAGE_NAME />

הוספת ההצהרה הזו תאפשר לך לבדוק אם האפליקציה המארחת מותקנת וגם לקיים איתו אינטראקציה, למשל bindService() אפליקציית השיחות שמשתמשת בספרייה שלך הופכת באופן אוטומטי גלויים לאפליקציה המארחת כתוצאה מ- מהאינטראקציה הזאת.

חבילות שתואמות לחתימה של מסנן Intent

ייתכן שהאפליקציה תצטרך לשלוח שאילתה או ליצור אינטראקציה עם קבוצה של אפליקציות שמפעילות למטרה מסוימת, אבל ייתכן שאתם לא יודעים מהם שמות החבילות הספציפיים כוללים. במקרה כזה, אפשר לרשום חתימות של מסנן כוונת רכישה ב- רכיב <queries>. לאחר מכן האפליקציה יכולה לגלות אפליקציות תואם <intent-filter> רכיבים.

בדוגמה הבאה של הקוד מוצג רכיב <intent> שיתיר את האפליקציה כדי לראות אפליקציות מותקנות אחרות שתומכות בשיתוף תמונות בפורמט JPEG:

<manifest package="com.example.game">
    <queries>
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="image/jpeg" />
        </intent>
    </queries>
    ...
</manifest>

לרכיב <intent> יש מספר הגבלות:

  • צריך לכלול רק רכיב <action> אחד.
  • לא ניתן להשתמש במאפיינים path, pathPrefix, pathPattern או port ברכיב <data>. המערכת פועלת כאילו מגדירים את הערך של כל מאפיין לתו הכללי לחיפוש הכללי (*).
  • לא ניתן להשתמש במאפיין mimeGroup של רכיב <data>.
  • בתוך רכיבי <data> של רכיב <intent> יחיד, אפשר להשתמש בכל אחד של המאפיינים הבאים לכל היותר:

    • mimeType
    • scheme
    • host

    אפשר להפיץ את המאפיינים האלה בכמה רכיבי <data> או להשתמש בהם אותם ברכיב <data> יחיד.

הרכיב <intent> תומך בתו הכללי לחיפוש הכללי (*) בתור עבור כמה מאפיינים:

  • המאפיין name של הרכיב <action>.
  • סוג המשנה של המאפיין mimeType של רכיב <data> (image/*).
  • הסוג וסוג המשנה של המאפיין mimeType של אלמנט <data> (*/*).
  • המאפיין scheme של רכיב <data>.
  • המאפיין host של רכיב <data>.

אלא אם צוין אחרת ברשימה הקודמת, המערכת לא תומכת שילוב של טקסט ותווים כלליים לחיפוש, למשל prefix*.

חבילות שנעשה בהן שימוש ברשות ספציפית

אם אתם צריכים לשלוח שאילתה על תוכן ספק אבל לא יודעים מה שמות החבילות הספציפיים. אפשר להצהיר על רשות הספק. ברכיב <provider>, כפי שמוצג בקטע הקוד הבא:

<manifest package="com.example.suite.enterprise">
    <queries>
        <provider android:authorities="com.example.settings.files" />
    </queries>
    ...
</manifest>

אפשר להצהיר על רשויות ספקים ברכיב <queries> אחד. בתוך רכיב <queries>, אפשר להצהיר על רכיב <provider> אחד או יותר. א' רכיב <provider> יכול לכלול רשות ספק אחת או רשימה של רשויות ספקים המופרדות באמצעות נקודה-פסיק.

כל האפליקציות (לא מומלץ)

במקרים נדירים, יכול להיות שתצטרכו לשלוח שאילתה או ליצור אינטראקציה עם כל האפליקציות המותקנות במכשיר, ללא קשר לרכיבים שהם מכילים. כדי לאפשר לאפליקציה: לראות את כל שאר האפליקציות המותקנות, המערכת מספקת את QUERY_ALL_PACKAGES הרשאה.

דוגמאות לתרחישים לדוגמה שבהם ההרשאה QUERY_ALL_PACKAGES מתאימה לכלול:

  • אפליקציות נגישות
  • דפדפנים
  • אפליקציות לניהול מכשירים
  • אפליקציות אבטחה
  • אפליקציות אנטי-וירוס

עם זאת, בדרך כלל ניתן למלא את השימוש באפליקציה על ידי אינטראקציה עם קבוצת האפליקציות שמוצגות באופן אוטומטי ועל ידי הצהרה על האפליקציות האחרות שהאפליקציה שלך צריכה לגשת אליה בקובץ המניפסט. שפת תרגום לכבד את פרטיות המשתמשים, האפליקציה שלך צריכה לבקש את כמות החבילה הקטנה ביותר החשיפה הנדרשת כדי שהאפליקציה שלך תפעל.

עדכון המדיניות הזה של Google הפעלה מספקת הנחיות לאפליקציות שצריכות את ההרשאה QUERY_ALL_PACKAGES.