<ارائه دهنده>

نحو:
<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
همچنین ببینید:
ارائه دهندگان محتوا