Middle
Content Provider nedir ve Android'de nasıl kullanılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Content Provider — Android’in temel yapı taşlarından biridir (Application Component), yapılandırılmış verilere erişim ve yönetim için standartlaştırılmış bir arayüz sağlar. Uygulama ile veri kaynağı (örneğin, SQLite veritabanı, dosyalar, ağ verileri) arasında aracılık görevi görür.
Kullanım alanları:
- Verilere ortak erişim: Farklı uygulamaların, altta yatan veri kaynağına doğrudan erişimi olmadan, güvenli bir şekilde aynı verilere erişmesini sağlar.
- İzinlerin yönetimi: Hangi uygulamaların verilere erişebileceğini ve hangi işlemleri (okuma, yazma, güncelleme, silme) yapabileceklerini kontrol etmeye olanak tanır.
- Veri kaynağının soyutlanması: Veri kaynağının uygulama tarafından nasıl gerçekleştirildiğini gizler, verilere erişimi basitleştirir.
- Android Framework ile entegrasyon:
CursorLoadergibi bileşenler aracılığıyla asenkron veri yükleme veSyncAdapterile veri senkronizasyonu sağlar.
Content Provider’ın temel metodları:
// Sağlayıcıya sorgu gönderir ve bir Cursor döner
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
// Yeni bir kayıt ekler ve yeni kaydın URI’sini döner
public Uri insert(Uri uri, ContentValues values);
// Mevcut kayıtları günceller ve güncellenen satır sayısını döner
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
// Kayıtları siler ve silinen satır sayısını döner
public int delete(Uri uri, String selection, String[] selectionArgs);
// Belirli bir URI için MIME türünü döner
public String getType(Uri uri);
// Sağlayıcıyı başlatır ve oluşturur
public boolean onCreate();
Content Provider’a erişmek için kullanılan URI şu formattadır:
content://authority/path segment/id
Burada:
content://— Content Providers için standart şema.authority— Content Provider’ı tanımlayan benzersiz dize (genellikle uygulama paket adı veya onun bir parçası).path segment— Belirli bir tablo veya veri kümesine işaret eden isteğe bağlı kısım.id— Veri kümesinde belirli bir kaydı gösteren isteğe bağlı kısım.
Content Provider ile etkileşimde bulunmak için ContentResolver kullanımı örneği:
// ContentResolver örneği alınır
ContentResolver resolver = getContentResolver();
// Veri erişimi için URI (örneğin, sistem kontak sağlayıcısı)
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
// Sorgu çalıştırılır
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
// Sonuç işlenir (cursor dolaşılır)
if (cursor != null && cursor.moveToFirst()) {
// ... cursor’dan veri okunur ...
cursor.close(); // Her zaman cursor kapatılmalı!
}
Content Provider, AndroidManifest.xml dosyasında kaydedilir:
<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" />