- نحو:
<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>
در فایل مانیفست تعریف شوند. در غیر این صورت، سیستم از آنها بی خبر است و آنها را اجرا نمی کند.فقط ارائه دهندگان محتوا را که بخشی از برنامه شما هستند، اعلام کنید. ارائه دهندگان محتوا را در سایر برنامه هایی که در برنامه خود استفاده می کنید، اعلام نکنید.
سیستم Android ارجاعات به ارائهدهندگان محتوا را براساس یک رشته معتبر ، بخشی از URI محتوای ارائهدهنده، ذخیره میکند. به عنوان مثال، فرض کنید می خواهید به یک ارائه دهنده محتوا دسترسی داشته باشید که اطلاعات مربوط به متخصصان مراقبت های بهداشتی را ذخیره می کند. برای انجام این کار، شما متد
ContentResolver.query()
را فراخوانی میکنید، که یک URI میگیرد که ارائهدهنده را شناسایی میکند، در میان آرگومانهای دیگر:content://com.example.project.healthcareprovider/nurses/rn
طرح
content:
URI را به عنوان یک URI محتوا که به ارائهدهنده محتوای Android اشاره میکند، شناسایی میکند. مرجعcom.example.project.healthcareprovider
خود ارائه دهنده را شناسایی می کند. سیستم اندروید مرجع را در لیست ارائه دهندگان شناخته شده و مقامات آنها جستجو می کند. زیر رشتهnurses/rn
مسیری است که ارائهدهنده محتوا از آن برای شناسایی زیرمجموعههای دادههای ارائهدهنده استفاده میکند.وقتی ارائهدهنده خود را در عنصر
<provider>
تعریف میکنید، طرح یا مسیر را در آرگومانandroid:name
وارد نمیکنید، بلکه فقط مرجع را درج نمیکنید.برای اطلاعات در مورد استفاده و توسعه ارائه دهندگان محتوا، به ارائه دهندگان محتوا مراجعه کنید.
- صفات:
-
android:authorities
- فهرستی از یک یا چند مرجع URI که داده های ارائه شده توسط ارائه دهنده محتوا را شناسایی می کند. چندین مرجع را با جدا کردن نام آنها با نقطه ویرگول فهرست کنید. برای جلوگیری از تضاد، از یک قرارداد نامگذاری به سبک جاوا برای نامهای مرجع استفاده کنید، مانند
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
به ارائهدهنده دسترسی دارند، به آن دسترسی دارند.
از آنجایی که این ویژگی در سطح 17 API معرفی شد، همه دستگاههایی که سطح API 16 و پایینتر را اجرا میکنند، طوری رفتار میکنند که گویی این ویژگی
"true"
تنظیم شده است. اگرandroid:targetSdkVersion
روی 17 یا بالاتر تنظیم کنید، مقدار پیشفرض برای دستگاههایی که API سطح 17 و بالاتر دارند"false"
است.شما می توانید
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>
فعال کنید، زمانی که یک URI تحت پوشش از ارائه دهنده حذف شدContext.revokeUriPermission()
را فراخوانی کنید.عنصر
<grant-uri-permission>
را نیز ببینید. -
android: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
- همچنین ببینید:
- ارائه دهندگان محتوا
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2024-11-10 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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"]],["تاریخ آخرین بهروزرسانی 2024-11-10 بهوقت ساعت هماهنگ جهانی."],[],[]]