Junior
Android'de mesaj almak için BroadcastReceiver nasıl bağlanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
İki temel yöntem vardır:
-
Dinamik kayıt:
- Programatik olarak kodda kaydedilir ve iptal edilir.
- Kaydeden nesne aktif olduğu sürece devam eder.
- Sürekli alınması gerekmediği veya uygulama aktif değilken (örneğin, yön değişikliği, pil seviyesi) kullanılır.
// Activity veya Fragment içinde private val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { // Alınan mesajın işlenmesi intent?.action?.let { action -> when (action) { Intent.ACTION_BATTERY_CHANGED -> { // Pil değişikliğinin işlenmesi } // Diğer eylemler } } } } override fun onResume() { super.onResume() val intentFilter = IntentFilter().apply { addAction(Intent.ACTION_BATTERY_CHANGED) // Diğer eylemler } registerReceiver(receiver, intentFilter) } override fun onPause() { super.onPause() unregisterReceiver(receiver) } -
Statik kayıt:
- AndroidManifest.xml dosyasında ilan edilir.
- Kaydeden bileşenin yaşam döngüsünden daha uzun süre yaşar. Uygulama aktif değilken bile mesaj alabilir (bazı işlemler için, Android'in son sürümlerinde sınırlamalarla).
- Sistem olayları için kullanılır, sürekli alınması gereken (örneğin, cihaz açıldığında).
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.yourapp"> <application ...> <receiver android:name=".MyBroadcastReceiver" android:exported="true"> <!-- Android 12+ için önemli --> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.AIRPLANE_MODE" /> <!-- Diğer eylemler --> </intent-filter> </receiver> ... </application> </manifest>// BroadcastReceiver sınıfı class MyBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { // Alınan mesajın işlenmesi intent?.action?.let { action -> when (action) { Intent.ACTION_BOOT_COMPLETED -> { // Başlangıç tamamlandığında işleme } Intent.ACTION_AIRPLANE_MODE_CHANGED -> { // Uçak modu değişikliğinin işlenmesi } // Diğer eylemler } } } }