Content Providers در اندروید – آموزش Android

  • پنجشنبه ۱۴ اسفند ۱۳۹۹
  • بازدید ۲۲۲ نفر

android content providers 3350 تصویر

Content Providers در اندروید

Content Provider یکی از قابلیت های جالب اندروید است که به یک برنامه اجازه می دهد تا داده های خود را با سایر برنامه های دیگر به اشتراگ بگذارد. یک Content Provider می تواند داده ها را به روش های مختلف از جمله فایل، دیتابیس و حتی روی شبکه ذخیره کند. گاهی اوقات لازم است تا داده ها را با برنامه مختلف به اشتراک بگذاریم. در این مواقع از Content Provider ها استفاده می شود.

Content Provider ها به شما اجازه می دهند تا محتوا را به شکل متمرکز در یک مکان ذخیره کنید تا در صورت نیاز به آن ها دسترسی داشته باشید. عملکر Content Provide ها بسیار شبیه به دیتابیس می باشد و می توانید عملیات های رایجی که بر روی دیتابیس انجام می دهید (پرس و جو، افزودن، حذف، ویرایش) را به راحتی و با استفاده از متدهای inserter، update، delete و query انجام دهید. در اکثر مواقع این داده های اشتراکی در دیتابیس SQLite نگه داری می شوند.

یک Content Provider از کلاس اصلی ContentProvider مشتق می شود و باید یک مجموعه استاندارد از PAPI ها را پیاده سازی کند تا سایر برنامه ها قادر به استفاده از داده های اشتراکی باشند.

آدرس محتوا (Content URLs)

به منظور دسترسی به داده هایی که یک Content Provider ارائه می کند، باید درخواست ها را در قالب یک URL و در فرمت زیر مشخص کرد:

توضیح بخش های مختلف یک آدرس:

ردیفتوضیحات
۱prefix

این بخش همیشه به صورت content:// تنظیم می شود.

۲authority

این بخش نام Content Provider را مشخص می کند. برای مثال Contacts، Browser و غیره. بهتر است یک نام کامل مانند com.tutorialspoint.statusprovider برای آن تنظیم کنید.

۳data_type

در این بخش از آدرس، نوع داده ای را که Content Provider ارائه می کند، مشخص می شود. برای نمونه، اگر شما بخواهید اطلاعات مخاطبین را توسط Content Provider دریافت کنید، باید از نوع people استفاده کنید که به صورت content://contacts/people می باشد.

۴id

این بخش از آدرس id رکورد موجود در Content Provider را مشخص می کند. برای مثال زمانی که بخواهیم اطلاعات مربوط به مخاطب پنجم را دریافت کنیم، آدرس ما به صورت content://contacts/people/5 خواهد بود.

ایجاد یک Content Provider

در زیر نحوه ایجاد یک Content Provider به صورت ساده توضیح داده شده است:

  • اول از همه باید یک کلاس که از کلاس ContentProvider مشتق شده است، ایجاد کنید.
  • در مرحله بعد باید آدرس دسترسی به Content Provider را طبق قالبی که در بخش بالا گفته شد، مشخص کنید.
  • در محله بعد، باید داده ها را درون یک دیتابیس ذخیره کنید. اندروید معمولا از دیتابیس SQLite استفاده می کند.
  • سپس باید توابع مختلفی که برای پرس و جو بر روی Content Provider لازم هستند را بازنویسی کنید.
  • در نهایت Content Provider ایجاد شده را درون Activity مورد استفاده و درون تگ <provider> معرفی می کنیم.

در زیر لیست توابعی که برای انجام عملیات های خاص باید باز نوشی شوند را مشاهده می کنید:

  • onCreate() : این متد زمانی که Provider شروع شود، فراخوانی می شود.
  • query() : این متد درخواست هایی که از طرف کلاینت می شود را دریافت می کند و به صورت یک شیء از نوع Cursor باز میگرداند.
  • insert() : این متد به منظور افزودن یک رکورد جدید درون Content Provider استفاده می شود.
  • delete() : این متد به منظور حذف یک رکورد موجود در Content Provider استفاده می شود.
  • update() : این متد به منظور به روز رسانی یک رکورد موجود در Content Provider استفاده می شود.
  • getType() : این تابع نوع داده ای را که از طریق آدرس بازگردانده می شود را مشخص می کند.

مثال

این مثال به شما نحوه ایجاد یک Content Provider را به صورت مرحله به مرحله توضیح می دهد.

مرحلهتوضیحات
۱نرم افزار Android Studio را باز کرده و یک پروژه به صورت زیر ایجاد کنید:

نام : My Application

نام پکیج: com.example.MyApplication

و یک Activity خالی

۲دو متد onClickAddName() و onClickRetrieveStudents() را به فایل MainActivity.java موجود در پروژه اضافه کنید.
۳یک فایل جدید با نام StudentsProvider.java و تحت پکیج com.example.MyApplication برای تعریف Content Provider و متدهای مربوط به آن ایجاد کنید.
۴Content Provider خود را با استفاده از تگ <provider …/> در فایل AndroidManifest.xml معرفی کنید.
۵محتوای پیش فرض فایل res/layout/activity_main.xml را برای ایجاد یک GUI کوچک تغییر دهید.
۶نیازی به تغییر فایل string.xml نیست.
۷برنامه را اجرا کنید تا شبیه ساز اندروید راه اندازی شود و نتیجه تغییرات ایجاد شده را مشاهده کنید.

کد زیر محتوای تغییر یافته فایل src/com.example.MyApplication/MainActivity.java می باشد. ما دو متد  onClickAddName و  onClickRetrieveStudents را به منظور مدیریت تعاملات کاربر با برنامه به این فایل اضافه کرده ایم.

یک فایل جدید به نام StudentProvider.java و تحت پکیج com.example.MyApplication به پروژه اضافه کنید و کد زیر را درون آن قرار دهید (src/com.example.MyApplication/StudentsProvider.java).

بعد از انجام مراحل بالا، باید Content Provider را درون فایل AndroidManifest.xml معرفی کنیم.

کد زیر محتوای مربوط به فایل res/layout/activity_main.xml می باشد.

مطمئن شوید که محتویات فایل res/values/strings.xml به صورت زیر باشد:

اگر قبلا شبیه ساز خود را ایجاد کرده اید، بر روی دکمه Run کلیک کنید تا برنامه شما در شبیه ساز اجرا شود و نتیجه را مشاهده کنید. حال یک نام و یک رتبه نمونه در فیلد های مشخص شده وارد کنید و سپس دکمه Add Name را لمس کنید تا اطلاعات دانش آموز جدید در دیتابیس ثبت شود. به منظور افزودن یک رکورد جدید به دیتابیس از متد insert استفاده می شود. این روند را چند بار تکرار کنید تا تعداد دانش آموز در دیتابیس شما ثبت شود.

بعد از افزودن دانش آموزان به دیتابیس، حال می توانید با استفاده از دکمه Retrieve Student دانش آموزان ثبت شده را مشاهده کنید. این کار با استفاده از متد query انجام می شود. برای تمرین می توانید، قابلیت و ویرایش و حذف را هم به این برنامه اضافه کنید. برای این کار باید دو متدی که برای حذف و ویرایش لازم هستند را درون فایل MainActivity.java تعریف کنید و همچنین رابط کاربری برنامه را متناسب با قابلیت ها جدید تغییر دهید.

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است