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.