Android Broadcast Receiver ve Innner Class Receiver Kullanımı Örnek

Categories AndroidPosted on

BroadCastReceiver Android işletim sistemi tarafından uygulamalara gönderilen sinyalleri dinlemek ve takip etmekle görevli olan bir yapıdır. Gönderilen bu sinyaller işletim sistemiyle birlikte gelen sistem uygulamaları tarafından oluşturulabilir. Ayrıca Play Store üzerinden indirilen uygulamalar tarafından da kullanıcıya gönderilebilir.

Android broadcast receiver kullanımı birden fazla şekilde yapılabilmektedir. Bu yazıda Broadcast Kullanımı, Inner Class Kullanarak Broadcast Receiver İşlemleri hakkında bilgileri bulabilirsiniz.

  <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:id="@+id/button_broadcast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="196dp"
            android:text="Broadcast"
            android:onClick="SendBroadcastMessage"
            tools:layout_editor_absoluteX="137dp"
            tools:layout_editor_absoluteY="195dp" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button_broadcast"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="65dp"
            android:onClick="BroadcastReceiverInnerClass"
            android:text="Broadcast İnner" />
    </RelativeLayout>

Örneğimizde ana ekranda iki adet buton bulunmaktadır. Ve bu butonların onClick methodlarına birer fonksiyon tanımlaması yapılmıştır. Tanımlanan fonksiyonlar yukarıdaki ana ekran xml dosyalarından görülmektedir.

android:onClick=”SendBroadcastMessage”

android:onClick=”BroadcastReceiverInnerClass”


Kodlamamıza geçebiliriz. Öncelikle Broadcast Receiver kullanabilmek için gerekli izinleri Manifest dosyamıza el ile eklemeliyiz. Aksi taktirde oluşturduğumuz Broadcast Receiverlarımız çalışmayacaktır.

Manifest Dosyası Receiver Tanımlaması
<receiver android:name=”.MyFirstReceiver”></receiver>

Manifest Dosyası Receiver Tanımlaması
<receiver android:name=”.MainActivity$BroadcastReceiverInnerClass”></receiver>

public class MainActivity extends AppCompatActivity {

    // Log kaydı için kullanılacaktır.
    private static final String TAG=MainActivity.class.getSimpleName();

    Button broadcastNow;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        broadcastNow=(Button)findViewById(R.id.button_broadcast);
    }

    public void SendBroadcastMessage(View v){
        // Broadcast çağırma intent ile yapılmaktadır. İlk çağırma işlemi normal activity geçişleri için kullanılan intent kullanımı ile aynıdır.
        Intent intent=new Intent(MainActivity.this,MyFirstReceiver.class);

        // Daha sonra Broadcast Receiver çağırmak için startActivity() değil sendBroadcast() fonksiyonunu kullanıyoruz.
        sendBroadcast(intent);
    }

    // Inner class Receiver için de yukarıda belirtilen aynı işlemler yapılıyor.
    public void BroadcastReceiverInnerClass(View view) {
        Intent intent =new Intent(this,BroadcastReceiverInnerClass.class);
        sendBroadcast(intent);
    }
/*
     Inner Class Kullanarak Broadcast Receiver İşlemleri
*/

  // Bir BroadcastReceiver oluşturacağımız için oluşturduğumuz sınıfı BroadcastReceiver dan extends etmeliyiz.
public static class BroadcastReceiverInnerClass extends BroadcastReceiver{

    // LOG kaydı için TAG Belirlendi. İsteğe bağlı olmakla birlikte Log kayıtlarını LogChat Ekranından görebilrisiniz.
    private static String LOG=BroadcastReceiverInnerClass.class.getSimpleName();

    // Extends ettikten sonra onReceive() zorunlu olarak eklenmelidir. Bu fonksiyonu Android Studio kullanarak otomatik olarak ekleyebilirsiniz.
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG,"Inner Receiver");
        Toast.makeText(context,"Inner Receiver",Toast.LENGTH_LONG).show();        }
}
}

Yukarıda  yer alan:

Intent intent =new Intent(this,BroadcastReceiverInnerClass.class);

sendBroadcast(intent);

kodu ile oluşturduğumuz Broadcast çağırılmaktadır.  Oluşturduğumuz broadcast :

public class MyFirstReceiver extends BroadcastReceiver {

    // LOG kaydı için TAG Belirlendi. İsteğe bağlı olmakla birlikte Log kayıtlarını LogChat Ekranından görebilrisiniz.
    private static final String TAG=MyFirstReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG,"Birinci Receiver");
        // Receiver çağırdığımız zaman kullanıcıya Toast mesaj gönderiyoruz.
        Toast.makeText(context,"Birinci Receiver",Toast.LENGTH_LONG).show();
    }
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.