<provider>

תחביר:
<provider android:authorities="list"
          android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string" >
    ...
</provider>
בתוך:
<application>
יכול להכיל:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
תיאור:
מצהיר על רכיב של ספק תוכן. ספק תוכן הוא תת-מחלקה של ContentProvider שמספקת גישה מובנית לנתונים שמנוהלים על ידי תרגום מכונה. כל ספקי התוכן באפליקציה חייבים להיות מוגדרים רכיב <provider> בקובץ המניפסט. אחרת, המערכת לא מודעת אליהם ולא מפעיל אותם.

להצהיר (declare) על ספקי תוכן רק שהם חלק מהאפליקציה שלך. לא להצהיר על ספקי תוכן ב: יישומים אחרים שבהם אתם משתמשים באפליקציה.

מערכת Android שומרת הפניות לספקי תוכן בהתאם לרשות מסוימת. , חלק מ-URI של התוכן של הספק. לדוגמה, נניח שאתם רוצים גישה לספק תוכן שמאחסן מידע על אנשי מקצוע בתחום הבריאות. לבצע קוראים לשיטה ContentResolver.query(), שלוקחת URI שמזהה את הספק, בין שאר הארגומנטים:

content://com.example.project.healthcareprovider/nurses/rn

הסכימה content: מזהה את ה-URI כ-URI של תוכן שמפנה אל ספק תוכן של Android. הרשות com.example.project.healthcareprovider מזהה את הספק עצמו. מערכת Android מחפשת את הרשות ברשימת הספקים המוכרים שלה ואת הרשויות שלהם. מחרוזת המשנה nurses/rn היא נתיב, וספק התוכן משתמש בו. כדי לזהות קבוצות משנה של נתוני הספק.

כשמגדירים את הספק ברכיב <provider>, לא כוללים את הסכמה או את הנתיב בארגומנט android:name, אלא רק בלתי הוגנת.

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

:
android:authorities
רשימה של רשות URI אחת או יותר שמזהות נתונים שספק התוכן מציע. ציינו כמה רשויות. יש להפריד בין השמות באמצעות נקודה ופסיק. כדי למנוע התנגשויות, כדאי להשתמש במוסכמה למתן שמות בסגנון Java לשמות רשויות, כמו com.example.provider.cartoonprovider. בדרך כלל זה השם של המחלקה המשנית ContentProvider שמטמיעה את הספק

אין ברירת מחדל. יש לציין לפחות רשות אחת.

android:enabled
אם ספק התוכן יכול ליצור מופע של המערכת. זו "true" אם אפשר, ו-"false" אם לא. ערך ברירת המחדל "true".

לרכיב <application> יש ערך משלו מאפיין enabled שחל על כל הפריטים רכיבי אפליקציות, כולל ספקי תוכן. <application> ו-<provider> שניהם חייבים להיות "true", כי שניהם כברירת מחדל, להפעלת ספק התוכן. אם אחד מהם הוא "false", הספק מושבת. לא ניתן ליצור ממנו מופע.

android:directBootAware

אם ספק התוכן מודע ל-Direct-Boot – כלומר, האם היא יכולה לפעול לפני שהמשתמש מבטל את נעילת המכשיר.

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

ערך ברירת המחדל הוא "false".

android:exported
האם ספק התוכן זמין לשימוש באפליקציות אחרות.
  • "true": הספק זמין לאפליקציות אחרות. כל אפליקציה יכולה להשתמש ב-URI של התוכן של הספק כדי לגשת אליו, בכפוף להרשאות שצוינו עבור הספק.
  • "false": הספק לא זמין לאפליקציות אחרות. סיום android:exported="false" כדי להגביל את הגישה לספק אל תרגום מכונה. רק אפליקציות שיש להן אותו מזהה משתמש (UID) כמו של הספק, או אפליקציות שמקבלות גישה זמנית באמצעות android:grantUriPermissions יש גישה אליו.

המאפיין הזה נוסף לרמת API 17, ולכן כל המכשירים שמותקנת בהם רמת API 16 ומטה מתנהגים כאילו שהמאפיין הזה מוגדר "true". אם מגדירים android:targetSdkVersion ל-17 ומעלה, ערך ברירת המחדל הוא "false" למכשירים שמריצים API ברמה 17 ומעלה.

אפשר להגדיר את android:exported="false" ועדיין להגביל את הגישה אל הספק באמצעות הגדרת הרשאות permission .

android:grantUriPermissions
לא משנה אם לאנשים שבדרך כלל אין להם הרשאה: לגשת לנתונים של ספק התוכן יכול לקבל הרשאה לעשות זאת, להתגבר באופן זמני על ההגבלה שקבעה readPermission, writePermission, permission, וגם exported .

אם ניתן להעניק הרשאה, הערך הוא "true", ואם לא, הערך הוא "false". אם הערך הוא "true", אפשר לתת הרשאה לכל אחד מהתוכן של נתוני הספק. אם הערך שלו הוא "false", אפשר לתת את ההרשאה רק לקבוצות המשנה של הנתונים <grant-uri-permission> רכיבים משניים, אם בכלל. ערך ברירת המחדל הוא "false".

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

במקרים כאלה, ההרשאה מוענקת על ידי FLAG_GRANT_READ_URI_PERMISSION ו-FLAG_GRANT_WRITE_URI_PERMISSION דגלים באובייקט Intent שמפעיל את הרכיב. לדוגמה, יישום הדואר עשוי למקם את FLAG_GRANT_READ_URI_PERMISSION Intent הועבר אל Context.startActivity(). ההרשאה היא ספציפית ל-URI ב-Intent.

אם מפעילים את התכונה הזו, צריך להגדיר את המאפיין הזה ל-"true" או באמצעות הגדרה של <grant-uri-permission> תת-רכיבים, קריאה Context.revokeUriPermission() כאשר URI מכוסה נמחק מהספק.

כדאי לעיין גם ב<grant-uri-permission> לרכיב מסוים.

android:icon
סמל שמייצג את ספק התוכן. מאפיין זה מוגדר כהפניה למשאב ניתן להזזה שמכיל את הגדרת התמונה. אם היא לא מוגדרת, הסמל שצוין עבור האפליקציה משמש במקום זאת, מידע נוסף זמין ב<application> המאפיין icon של הרכיב.
android:initOrder
הסדר שבו נוצר המופע של ספק התוכן, יחסית לספקי תוכן אחרים שמתארחים באותו תהליך. כאשר יש יחסי תלות בין ספקי התוכן, ההגדרה הזו עבור כל אחד מהם, מוודאים שהם נוצרו לפי הסדר שנדרשת על ידי יחסי התלות האלה. הערך הוא מספר שלם, עם אתחול של מספרים גבוהים יותר.
android:label
תווית קריאה למשתמש עבור התוכן שסופק. אם המאפיין הזה לא מוגדר, התווית שהוגדרה עבור האפליקציה בכללותה נעשה בו שימוש. למידע נוסף, אפשר לעיין ברכיב <application> label.

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

android:multiprocess
אם האפליקציה פועלת בכמה תהליכים, המאפיין הזה קובע אם נוצרים כמה מופעים של ספק התוכן. אם "true", לכל אחד מהתהליכים של האפליקציה יש אובייקט של ספק תוכן משלו. אם המיקום "false", התהליכים של האפליקציה משתפים רק אובייקט אחד של ספק תוכן. ערך ברירת המחדל הוא "false".

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

android:name
שם המחלקה שמממשת את ספק התוכן, תת-מחלקה של ContentProvider. בדרך כלל מדובר ברמת הרשאה מלאה שם הכיתה, למשל "com.example.project.TransportationProvider". עם זאת, כקיצור, אם התו הראשון של השם הוא נקודה, הוא מצורף לשם החבילה שצוין רכיב <manifest>.

אין ברירת מחדל. צריך לציין את השם.

android:permission
שם ההרשאה שהלקוחות חייבים כדי לקרוא או לכתוב את של ספק התוכן. המאפיין הזה הוא דרך נוחה להגדיר הרשאה יחידה גם לקריאה וגם לכתיבה. אבל, readPermission, המאפיינים writePermission ו-grantUriPermissions מקבלים עדיפות בסרטון הזה.

אם readPermission מוגדר גם הוא, הוא שולט בגישה לשליחת שאילתות לספק התוכן. אם המאפיין writePermission מוגדר, הוא שולט בגישה לשינוי נתוני הספק.

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

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

של רכיב <application> process יכול להגדיר ברירת מחדל לכל הרכיבים. אבל כל רכיב יכול לשנות את ברירת המחדל עם מאפיין process משלו, שמאפשר לפזר בכמה תהליכים.

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

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

android:readPermission

הרשאה שהלקוחות צריכים כדי לשלוח שאילתה על ספק התוכן.

אם הספק מגדיר את android:grantUriPermissions ל-"true", או אם לקוח נתון עומד בתנאים של <grant-uri-permission> נוסף, הלקוח יכול לקבל גישת קריאה זמנית לתוכן של נתוני הספק.

כדאי לעיין גם בpermission וגם writePermission.

android:syncable
אם הנתונים בשליטת ספק התוכן ניתן לסנכרן אותם עם נתונים בשרת. השעה "true" אם הוא יכול, ו-"false" אם לא.
android:writePermission

הרשאה שלקוחות צריכים כדי לבצע שינויים בנתונים בשליטת ספק התוכן

אם הספק מגדיר את android:grantUriPermissions ל-"true", או אם לקוח נתון עומד בתנאים של <grant-uri-permission> נוסף, הלקוח יכול לקבל גישת כתיבה זמנית לשינוי התוכן של נתוני הספק.

כדאי לעיין גם בpermission וגם readPermission.

הושקו ב:
רמת API 1
למידע נוסף:
ספקי תוכן