用BroadcastReceiver接收SD卡狀態變化的事件時,老是沒法收到事件通知,經查是少了如下紅色語句。ide
緣由涉及Android中IntentFilter匹配原則問題。這篇文章講得比較清楚http://blog.csdn.net/silenceburn/article/details/6083375 , 這裏就再也不贅述。spa
.......net
IntentFilter sdcardActionFilter = new IntentFilter();
sdcardActionFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
sdcardActionFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
sdcardActionFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
sdcardActionFilter.addDataScheme("file");
SDcardListenerReceiver sdCardStateReceiver = new SDcardListenerReceiver();blog
registerReceiver(sdCardStateReceiver, sdcardActionFilter);事件
......get
static final class SDcardListenerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_REMOVED)
|| action.equals(Intent.ACTION_MEDIA_UNMOUNTED)
|| action.equals(Intent.ACTION_MEDIA_BAD_REMOVAL)
) {
......
}
}
}io