Middle
Content Provider nima va Androidda qanday ishlatiladi?
sobes.tech AI
AIdan javob
Content Provider — Androidning asosiy qurilish bloklaridan biri (Application Component), strukturali ma'lumotlarga kirish va boshqarish uchun standart interfeys taqdim etadi. U ilova va ma'lumot manbai (masalan, SQLite ma'lumotlar bazasi, fayllar, tarmoq ma'lumotlari) o'rtasida vositachi sifatida ishlaydi.
U quyidagilar uchun ishlatiladi:
- Ma'lumotlarga umumiy kirish: Turli ilovalar xavfsiz tarzda bir xil ma'lumotlarga to'g'ridan-to'g'ri kirish olmaysiz, lekin ularga kirishni ta'minlaydi.
- Ruxsatlarni boshqarish: Qaysi ilovalar ma'lumotlarga kirish huquqiga ega ekanligini va qanday operatsiyalarni (o'qish, yozish, yangilash, o'chirish) amalga oshirish mumkinligini nazorat qilish imkonini beradi.
- Ma'lumot manbasining abstraktsiyasi: Ma'lumot manbasining amalga oshirilish tafsilotlarini mijozlardan yashiradi, ma'lumotlarga kirishni soddalashtiradi.
- Android Framework bilan integratsiya:
CursorLoaderkabi komponentlar yordamida ma'lumotlarni asinxron yuklash vaSyncAdapteryordamida ma'lumotlarni sinxronlashtirish uchun ishlatiladi.
Content Provider ning asosiy metodlari:
// Provayderga so'rov yuboradi va Cursor qaytaradi
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
// Yangi yozuvni provayderga qo'shadi va yangi yozuvning URI sini qaytaradi
public Uri insert(Uri uri, ContentValues values);
// Mavjud yozuvlarni yangilaydi va yangilangan satrlar sonini qaytaradi
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
// Yozuvlarni o'chiradi va o'chirilgan satrlar sonini qaytaradi
public int delete(Uri uri, String selection, String[] selectionArgs);
// Berilgan URI uchun MIME turini qaytaradi
public String getType(Uri uri);
// Provayderni yaratish va ishga tushirish
public boolean onCreate();
Content Provider ga kirish uchun URI quyidagicha formatlanadi:
content://authority/path segment/id
bu yerda:
content://— Content Providers uchun standart sxema.authority— Content Provider ni identifikatsiya qiluvchi yagona satr (odatda ilovaning paket nomi yoki uning bir qismi).path segment— ma'lum jadval yoki ma'lumotlar to'plamiga ishora qiluvchi ixtiyoriy qism.id— ma'lumotlar to'plamidagi ma'lum yozuvni ko'rsatadigan ixtiyoriy qism.
Content Provider bilan ishlash uchun ContentResolver dan foydalanish misoli:
// ContentResolver instansiyasini olish
ContentResolver resolver = getContentResolver();
// Ma'lumotlarga kirish uchun URI (masalan, tizim kontakt provayderi)
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
// So'rovni bajarish
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
// Natijani qayta ishlash (cursor bo'ylab yurish)
if (cursor != null && cursor.moveToFirst()) {
// ... cursor dan ma'lumotlarni o'qish ...
cursor.close(); // Har doim cursor ni yopishni unutmang!
}
Content Provider AndroidManifest.xml faylida ro'yxatdan o'tkaziladi:
<provider
android:name=".MyContentProvider"
android:authorities="com.example.myapp.provider"
android:exported="true"
android:readPermission="com.example.myapp.permission.READ_DATA"
android:writePermission="com.example.myapp.permission.WRITE_DATA" />