Sobes.tech
Middle

Content Provider nədir və Android-də necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Content Provider — Android-in əsas tikinti bloklarından biridir (Application Component), strukturlaşdırılmış məlumatlara giriş və idarə üçün standartlaşdırılmış interfeys təmin edir. O, tətbiq və məlumat mənbəyi (məsələn, SQLite verilənlər bazası, fayllar, şəbəkə məlumatları) arasında vasitəçi kimi fəaliyyət göstərir.

O, aşağıdakı üçün istifadə olunur:

  • Məlumatlara ümumi giriş: Müxtəlif tətbiqlərə təhlükəsiz şəkildə eyni məlumatlara giriş imkanı verir, birbaşa məlumat mənbəyinə giriş olmadan.
  • İcazələrin idarə olunması: Hansı tətbiqlərin məlumatlara giriş hüququna malik olduğunu və hansı əməliyyatları (oxuma, yazma, yeniləmə, silmə) həyata keçirə biləcəyini nəzarət edir.
  • Məlumat mənbəsinin abstraksiyası: Müştərilərə məlumat mənbəsinin həyata keçirilmə detalları gizlənir, məlumatlara giriş sadələşdirilir.
  • Android Framework ilə inteqrasiya: CursorLoader kimi komponentlər vasitəsilə məlumatların asinxron yüklənməsi və SyncAdapter ilə məlumatların sinxronizasiyası üçün istifadə olunur.

Content Provider-in əsas metodları:

// Provayderə sorğu göndərir və Cursor qaytarır
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);

// Yeni qeyd əlavə edir və yeni qeyd üçün URI qaytarır
public Uri insert(Uri uri, ContentValues values);

// Mövcud qeydləri yeniləyir və yenilənən sətirlərin sayını qaytarır
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);

// Qeydləri silir və silinən sətirlərin sayını qaytarır
public int delete(Uri uri, String selection, String[] selectionArgs);

// Verilmiş URI üçün MIME tipini qaytarır
public String getType(Uri uri);

// Provayderi yaradarkən işə salır və ilkinləşdirir
public boolean onCreate();

Content Provider-ə giriş üçün URI aşağıdakı formatda olur:

content://authority/path segment/id

burada:

  • content:// — Content Providers üçün standart sxema.
  • authority — Content Provider-i unikal şəkildə tanımlayan sətir (adətən, tətbiqin paket adı və ya onun bir hissəsi).
  • path segment — müəyyən cədvələ və ya məlumat dəstəsinə işarə edən optional hissə.
  • id — məlumat dəstəsində müəyyən qeydə işarə edən optional hissə.

Content Provider ilə qarşılıqlı əlaqə üçün ContentResolver istifadə nümunəsi:

// ContentResolver nümunəsini əldə edir
ContentResolver resolver = getContentResolver();

// Məlumatlara giriş üçün URI (məsələn, sistem kontakt provayderi)
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;

// Sorğu icra edilir
Cursor cursor = resolver.query(contactsUri, null, null, null, null);

// Nəticə işlənir (cursor üzərində gəzir)
if (cursor != null && cursor.moveToFirst()) {
    // ... cursor-dan məlumat oxumaq ...
    cursor.close(); // Həmişə cursor-u bağlayın!
}

Content Provider AndroidManifest.xml-də qeydiyyatdan keçirilir:

<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" />