2.Ichki provayderlar.
Android o'rnatilgan kontent-provayderlardan foydalanadi ( android.provider to'plami ). Kontent provayderlarining qisman ro'yxati:
Brauzer
CallLog
Kontaktlar
Odamlar
Telefonlar
Fotosuratlar
Guruhlar
MediaStore
Ovoz
Albomlar
Rassomlar
Janrlar
Pleylistlar
Tasvirlar
Video
Sozlamalar
Ma'lumotlar bazalari iyerarxiyaning yuqori darajalarida, jadvallar esa quyi darajalarda joylashgan. Masalan, Browser, CallLog, Contacts, MediaStore va Settings bu provayder shaklida joylashgan alohida SQLite ma'lumotlar bazalari. Odatda, ushbu SQLite ma'lumotlar bazalari JB kengaytmasiga ega va ularga faqat amaliy dastur paketidan kirish mumkin. Ushbu to'plamdan tashqarida ma'lumotlar bazasiga har qanday kirish kontent-provayder interfeysi orqali amalga oshiriladi.
3.O'zingizning kontent-provayderingizni yaratish.
O'zingizning kontent-provayderingizni yaratish uchun mavhum ContentProvider sinfidan meros olishingiz kerak :
public class MyContentProvider extends ContentProvider {
}
Sinf mavhum usullari amalga oshirish kerak so'rog'ini () , Insert () , yangilash () , o'chirish () , GetType () , onCreate () . An'anaviy ma'lumotlar bazasini yaratish bilan ba'zi o'xshashliklar mavjud.
Shuningdek, u provayder yorlig'i yordamida ism va vakolatlarning atributlari bilan ro'yxatdan o'tkazilishi kerak . Rasmiylari tegi bazasi URI yo'lini aniqlash uchun ishlatiladi ContentResolver bilan ta'sir o'tkazish uchun ma'lumotlar bazasini topishingiz mumkin. Ushbu yorliq noyob bo'lishi kerak, shuning uchun boshqa ilovalar bilan chalkashmaslik uchun paket nomidan foydalanish tavsiya etiladi, masalan:
android:name:".MyContentProvider"
android:authorities="ru.alexanderklimov.provider.notepad" />
Kontent-provayderning manbasi saytning domen nomi bilan bir xil. Agar manba allaqachon ro'yxatdan o'tgan bo'lsa, ushbu kontent-provayderlar tegishli manba prefiksidan boshlab ko'priklar bilan ifodalanadi:
content://ru.alexanderklimov.provider.notepad/
Shunday qilib, veb-saytlar kabi kontent provayderlari boshlang'ich URL vazifasini bajaradigan asosiy domen nomiga ega.
Shuni ta'kidlash kerakki, Android-da ishlatiladigan kontent-provayderlar to'liq bo'lmagan manba nomiga ega bo'lishi mumkin. To'liq manba nomidan faqat uchinchi tomon kontent-provayderlari bilan foydalanishni tavsiya etamiz. Shu sababli, ba'zida kontaktlar kabi bitta so'zli tarkib ko'rsatuvchi provayderlarni uchratishingiz mumkin , ammo bunday tarkib provayderining to'liq nomi com.google.android.contacts .
Kontent-provayderlar, shuningdek, ma'lumotlarni topish va ular bilan ishlash uchun REST-ga o'xshash ko'priklardan foydalanadilar. Yuqorida tavsiflangan ro'yxatdan o'tishda, NotePadProvider ma'lumotlar bazasidagi katalog yoki yozuvlar to'plamini belgilash uchun mo'ljallangan yagona resurs identifikatori shunday nomlanadi:
content://ru.alexanderklimov.provider.notepad/notes
Bitta yozuvni aniqlash uchun URI quyidagicha ko'rinadi:
content://ru.alexanderklimov.provider.notepad/notes/#
# Belgisi ma'lum bir yozuvga mos keladi (jadval qatori). Quyida kontent-provayderlarda mavjud bo'lishi mumkin bo'lgan yana bir nechta URI namunalari keltirilgan:
content://media/internal/images
content://media/external/images
content://contacts/people/
content://contacts/people/23
Kontent provayderlarining tarkibi: // media va content: // aloqalari bu erda to'liq emasligiga e'tibor bering. Buning sababi shundaki, ushbu kontent-provayderlar uchinchi tomon emas va Android tomonidan boshqariladi.
|