Android ile SD Kart Algılama

Son zamanlarda yaptığım bir Android projesinde cihaza SD Kart’ın takıldığını algılatmam ve ona göre bir işlem yaratmam gerekti. Biraz araştırma sonunda bir “Receiver” yaratarak bunun mümkün olduğunu gördüm. Ancak ihtiyacım olan bunu Manifest dosyası içerisinden değil, programsal olarak yapmaktı. Tekrar araştırmaya girerek bunu da rahatlıkla yapılabildiğini öğrendim. Bunun için aşağıdaki metodu kullanabilirsiniz:

private BroadcastReceiver receiver;

private void registerSDReceiver() {

    IntentFilter filter = new IntentFilter();
    // burada hangi aksiyonları dinleyeceğimizi belirtiyoruz (sd kart takma ve çıkarma)
    filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
    filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
    filter.addDataScheme("file"); // bunun eklenmemesi durumunda uygulamamız çalışmaz

    receiver = new BroadcastReceiver() {
        /** Dinlediğimiz aksiyon gerçekleştiğinde çağrılır */
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if(action.equals(Intent.ACTION_MEDIA_MOUNTED))
                Log.d("registerSDReceiver", "SD Kart takıldı");
            else if(action.equals(Intent.ACTION_MEDIA_MOUNTED))
                Log.d("registerSDReceiver", "SD Kart çıkarıldı");
        }
    };

    registerReceiver(receiver, filter);
}

 

Tabi uygulamadan çıkıldığı zaman dinleme işlemini sonlandırmak doğru bir hareket olacaktır.

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
}

 

Uygulamaya ait tüm kodları buradan görebilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>