📡Receiver | Broadcast
Android üzerinde haber (broadcast) alma veya alıcılarının kullanımı
❣️ Broadcast Receiver Hakkında
🚫 UI thread üzerinden gerçekleştiğinden uzun işlemler yapılmamalı
⛔
onReceive()
metodu içerisinde asenkron işlemler yapmayın🤷♂️ Yapsanız bile
return
metodundan sonra broadcast işlemleri sonlandırılır☠️ Haliyle işlem asenkron olsa bile broadcast yapısına bağlı olduğundan ölecektir
🗨
AlertDialog
gibi işlemler yerineNotification
yapısı tercih edilmelidir

//Subclass of the BroadcastReceiver class.
private class myReceiver extends BroadcastReceiver {
// Override the onReceive method to receive the broadcasts
@Override
public void onReceive(Context context, Intent intent) {
//Check the Intent action and perform the required operation
if (intent.getAction().equals(ACTION_SHOW_TOAST)) {
CharSequence text = "Broadcast Received!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
}
🔸 Receiver Türleri
🎳 Static Receiver
📝 Manifest üzerinden kayıt edilmeleri gerekir
😥 Uygulamamızı hedef almayan yayınlarını Android 8.0'dan itibaren alamaz
🎈 implicit broadcast exceptions yayınlarını hala alabilmektedir
<receiver
android:name=".AlarmReceiver"
android:exported="false">
<intent-filter>
<action android:name=
"com.example.myproject.intent.action.ACTION_SHOW_TOAST"/>
</intent-filter>
</receiver>
✨ Dynamic Receiver
👀 Uygulama üzerinden ilgilendiğimiz broadcast'e erişmek için
IntentFilter
kullanırız🏗️ Genel kullanımı
onCreate
üzerinde yapılmaktadır (?)
IntentFilter intentFilter = new IntentFilter();
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
🎫 Broadcast Kayıtları
🎌 İlk olarak
receiver
yapısını uygulamamızaregisterReceiver
ile kaydederiz🙋♂️ Genelde
onResume
içerisinderegisterReceiver
işlemi yapılır🚫
onPause
içerisindeunregisterReceiver
metodu ile kaldırırız
mReceiver = new AlarmReceiver();
this.registerReceiver(mReceiver, intentFilter);
unregisterReceiver(mReceiver);
🏠 Local Broadcast Alımı
👮♂️ Local Broadcast, Dynamic Receiver ile alınmak zorundadır
LocalBroadcastManager.getInstance(this)
.registerReceiver(mReceiver,
new IntentFilter(CustomReceiver.ACTION_CUSTOM_BROADCAST));
LocalBroadcastManager.getInstance(this)
.unregisterReceiver(mReceiver);
🔏 İzin Gerektirenlerin Alımı
<receiver android:name=".MyBroadcastReceiver"
android:permission="android.permission.SEND_SMS">
<intent-filter>
<action android:name="android.intent.action.AIRPLANE_MODE"/>
</intent-filter>
</receiver>
IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
registerReceiver(receiver, filter, Manifest.permission.SEND_SMS, null );
👮♂ Broadcast Kısıtlamaları

🌟 Broadcast Tavsiyeleri

🔗 Faydalı Bağlantılar
Last updated
Was this helpful?