- תחביר:
-
<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><property>- תיאור:
-
מצהיר על רכיב של ספק תוכן. ספק תוכן הוא מחלקת משנה של
ContentProviderשמספקת גישה מובנית לנתונים שמנוהלים על ידי האפליקציה. צריך להגדיר את כל ספקי התוכן באפליקציה ברכיב<provider>בקובץ המניפסט. אחרת, המערכת לא מודעת להן ולא מפעילה אותן.צריך להצהיר רק על ספקי תוכן שהם חלק מהאפליקציה. אל תצהירו על ספקי תוכן באפליקציות אחרות שבהן אתם משתמשים באפליקציה שלכם.
מערכת Android מאחסנת הפניות לספקי תוכן לפי מחרוזת authority, שהיא חלק ממזהה ה-URI של התוכן של הספק. לדוגמה, נניח שאתם רוצים לגשת לספק תוכן שמאחסן מידע על אנשי מקצוע בתחום שירותי הבריאות. כדי לעשות את זה, מפעילים את ה-method
ContentResolver.query(), שמקבלת URI שמזהה את הפלאגין שמתממשק עם שירותים חיצוניים, בין ארגומנטים אחרים:content://com.example.project.healthcareprovider/nurses/rn
content:הסכימה מזהה את ה-URI כ-URI של תוכן שמפנה אל ספק תוכן של Android. הסמכותcom.example.project.healthcareproviderמזהה את הספק עצמו. מערכת Android מחפשת את הרשות ברשימת הספקים המוכרים והרשויות שלהם. מחרוזת המשנהnurses/rnהיא נתיב שספק התוכן משתמש בו כדי לזהות קבוצות משנה של נתוני הספק.כשמגדירים את הפלאגין שמתממשק עם שירותים חיצוניים ברכיב
<provider>, לא כוללים את ה-Scheme או את הנתיב בארגומנטandroid:name, אלא רק את הרשות.מידע על שימוש בספקי תוכן ופיתוח שלהם זמין במאמר בנושא ספקי תוכן.
- מאפיינים:
-
android:authorities-
רשימה של רשויות URI אחת או יותר שמזהות נתונים שספק התוכן מציע.
כדי לציין כמה רשויות, מפרידים בין השמות שלהן באמצעות נקודה-פסיק.
כדי להימנע מהתנגשויות, כדאי להשתמש במוסכמת מתן שמות בסגנון Java לשמות של רשויות, כמו
com.example.provider.cartoonprovider. בדרך כלל זה השם של מחלקת המשנהContentProviderשמטמיעה את הספקאין ברירת מחדל. צריך לציין לפחות רשות אחת.
android:enabled- האם המערכת יכולה ליצור מופע של ספק התוכן. הערך הוא
"true"אם אפשר, ו-"false"אם אי אפשר. ערך ברירת המחדל הוא"true".לאלמנט
<application>יש מאפייןenabledמשלו שחל על כל רכיבי האפליקציה, כולל ספקי תוכן. כדי שספק התוכן יופעל, הערכים של המאפיינים<application>ו-<provider>צריכים להיות"true", כמו שהם כברירת מחדל. אם אחד מהם הוא"false", הספק מושבת. אי אפשר ליצור ממנו מופע. android:directBootAwareהאם ספק התוכן תומך בהפעלה ישירה – כלומר, האם הוא יכול לפעול לפני שהמשתמש פותח את נעילת המכשיר.
הערה: במהלך הפעלה ישירה, ספק תוכן באפליקציה יכול לגשת רק לנתונים שמאוחסנים באחסון מוגן במכשיר.
ערך ברירת המחדל הוא
"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- סמל שמייצג את ספק התוכן.
המאפיין הזה מוגדר כהפניה למשאב של ציור שמכיל את הגדרת התמונה. אם לא מוגדר סמל, המערכת משתמשת בסמל שצוין לאפליקציה כולה. מידע נוסף זמין במאמר בנושא מאפיין
iconשל רכיבicon.<application> android:initOrder- הסדר שבו ספק התוכן מופעל, ביחס לספקי תוכן אחרים שמארחים את אותו תהליך. אם יש תלות בין ספקי התוכן, הגדרת המאפיין הזה לכל אחד מהם מבטיחה שהם ייצרו בסדר שנדרש על ידי התלות הזו. הערך הוא מספר שלם, כאשר המספרים הגבוהים יותר מאותחלים קודם.
android:label- תווית שהמשתמש יכול לקרוא ולהבין לגבי התוכן שסופק.
אם לא מגדירים את המאפיין הזה, המערכת משתמשת בתווית שהוגדרה לאפליקציה כולה. מידע נוסף זמין במאמר בנושא מאפיין
labelשל רכיב<application>.בדרך כלל התווית מוגדרת כהפניה למשאב מחרוזת, כדי שאפשר יהיה לבצע לוקליזציה שלה כמו למחרוזות אחרות בממשק המשתמש. עם זאת, כדי שיהיה לכם נוח יותר בזמן פיתוח האפליקציה, אפשר להגדיר אותו גם כמחרוזת גולמית.
android:multiprocess- אם האפליקציה פועלת בכמה תהליכים, המאפיין הזה קובע אם ייווצרו כמה מופעים של ספק התוכן. אם
"true", לכל אחד מהתהליכים של האפליקציה יש אובייקט משלו של ספק תוכן. אם"false", התהליכים של האפליקציה משתפים רק אובייקט אחד של ספק תוכן. ערך ברירת המחדל הוא"false".הגדרת הדגל הזה לערך
"true"יכולה לשפר את הביצועים על ידי הפחתת התקורה של תקשורת בין תהליכים, אבל היא גם מגדילה את טביעת הזיכרון של כל תהליך. android:name- שם המחלקה שמטמיעה את ספק התוכן, מחלקת משנה של
ContentProvider. בדרך כלל זה שם כיתה שמוגדר במלואו, כמו"com.example.project.TransportationProvider". עם זאת, כקיצור דרך, אם התו הראשון בשם הוא נקודה, הוא מתווסף לשם החבילה שצוין ברכיב<manifest>.אין ברירת מחדל. חובה לציין את השם.
android:permission- השם של הרשאה שלקוחות צריכים לקבל כדי לקרוא או לכתוב את הנתונים של ספק התוכן. המאפיין הזה מאפשר להגדיר הרשאה אחת גם לקריאה וגם לכתיבה. עם זאת, המאפיינים
readPermission,writePermissionו-grantUriPermissionsקודמים למאפיין הזה.אם גם המאפיין
readPermissionמוגדר, הוא שולט בגישה לשאילתות של ספק התוכן. אם המאפייןwritePermissionמוגדר, הוא שולט בגישה לשינוי הנתונים של הספק.מידע נוסף על הרשאות מופיע בקטע הרשאות בסקירה הכללית של קובץ מניפסט של אפליקציה ובטיפים לאבטחה.
android:process
- שם התהליך שבו ספק התוכן פועל. בדרך כלל, כל הרכיבים של אפליקציה פועלים בתהליך ברירת המחדל שנוצר עבור האפליקציה. השם שלו זהה לשם חבילת האפליקציה.
המאפיין
processשל הרכיב<application>יכול להגדיר ברירת מחדל שונה לכל הרכיבים. אבל כל רכיב יכול לבטל את ברירת המחדל באמצעות מאפיין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
- ראו גם:
- ספקי תוכן
<provider>
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2026-07-01 (שעון UTC).
[null,null,["עדכון אחרון: 2026-07-01 (שעון UTC)."],[],[]]