Sobes.tech
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: CursorLoader kabi komponentlar yordamida ma'lumotlarni asinxron yuklash va SyncAdapter yordamida 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" />