İki uygulama arasında veri iletme yöntemlerini belirtiniz.
sobes.tech yapay zeka
AI'dan gelen yanıt
-
İstekler: Başka bir uygulamanın bileşenlerini başlatmak ve verileri
Intent.putExtra()aracılığıyla iletmek için kullanılırlar. Primitif türler, String, Parcelable ve Serializable nesnelerin iletimini desteklerler.// Veri gönderme val intent = Intent("com.example.ANOTHER_APP_ACTION") intent.putExtra("key", "value") startActivity(intent)// Başka bir uygulamada (Activity'de) veri alma val data = intent.getStringExtra("key") -
İçerik Sağlayıcılar: Paylaşılan verilere yapılandırılmış erişim sağlarlar (örneğin, kişiler, medya). Uygulamalar URI aracılığıyla veri sorgulayabilir, ekleyebilir, güncelleyebilir ve silebilir.
ContentProvideruygulamasının uygulanmasını gerektirir.// Kişi verilerinden sorgu örneği (sistem ContentProvider) val cursor = contentResolver.query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null ) // ... cursor işleme cursor?.close() -
Binder (AIDL): Android Arayüz Tanımlama Dili. İki uygulama arasında süreçler arası iletişim (IPC) için kullanılır. Bir hizmetin arayüzünü tanımlamaya izin verir, bu arayüz başka bir süreçten çağrılabilir. Uygulaması karmaşık, yüksek trafikli veya çift yönlü iletişim gereken durumlar için uygundur.
// AIDL arayüzü örneği ( .aidl dosyasında) package com.example.myapp; interface IRemoteService { String getData(); void setData(String value); }// AIDL tabanlı binderslar oluşturulur ve bağlantı için kullanılır. // AIDL servisini kullanan müşteri örneği private var remoteService: IRemoteService? = null private val connection = object : ServiceConnection { override fun onServiceConnected(className: ComponentName, service: IBinder) { remoteService = IRemoteService.Stub.asInterface(service) // Artık remoteService metodlarını çağırabilirsiniz } override fun onServiceDisconnected(className: ComponentName) { remoteService = null } } -
Dosya Paylaşımı: Ortak dizinler aracılığıyla veya
FileProviderkullanarak geçici erişim sağlayarak yapılabilir. Okuma/yazma izinleri gereklidir.// FileProvider aracılığıyla geçici erişim örneği val fileUri = FileProvider.getUriForFile(context, "com.example.myapp.fileprovider", file) val intent = Intent(Intent.ACTION_VIEW) intent.setDataAndType(fileUri, "image/*") intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) startActivity(intent) -
Broadcast Alıcılar: Uygulamalar, yayınlanan mesajları (Broadcasts) gönderebilir ve alabilir. Veriler, Broadcast içindeki Intent aracılığıyla iletilir. Diğer uygulamalara olaylar hakkında bildirim göndermek için uygundur, iki taraflı veri iletimi için değil.
// Broadcast gönderme val intent = Intent("com.example.MY_CUSTOM_ACTION") intent.putExtra("data", "some_info") sendBroadcast(intent)// Broadcast alma (BroadcastReceiver'da) class MyReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val data = intent.getStringExtra("data") // ... } } -
Soketler: Aynı cihazda (localhost) veya ağ üzerinden uygulamalar arasında ağ iletişimi için kullanılırlar. Daha düşük seviyeli ağ protokolü uygulaması gerektirir.
-
Paylaşılan Tercihler / Veritabanları (sınırlı): Teknik olarak, ortak erişilebilir dizinde bulunan ortak bir SharedPreferences veya SQLite veritabanı dosyası kullanılabilir. Ancak, bu güvenilir ve güvenli bir yöntem değildir, izinlerin ve senkronizasyonun dikkatli yönetilmesini gerektirir ve güvensiz olabilir. Bağımsız uygulamalar arasında veri iletimi için genellikle önerilmez.