监控系统Sdcard卡插拔广播

    xiaoxiao2023-03-24  2

    1.注册广播

    /** * 注册Sd卡插拔广播 */ private void registerBroadCast() { SdcardActionBroadcastReceiver myActionBroadcastReceiver = new SdcardActionBroadcastReceiver(myhander); IntentFilter mFilter = new IntentFilter(); // Intent.ACTION_MEDIA_EJECT; //已拔掉外部大容量储存设备发出的广播(比如SD卡,或移动硬盘),不管有没有正确卸载都会发出此广播? //广播:用户想要移除扩展介质(拔掉扩展卡)。 mFilter.addAction(Intent.ACTION_MEDIA_EJECT); //Intent.ACTION_MEDIA_MOUNTED; //插入SD卡并且已正确安装(识别)时发出的广播 //广播:扩展介质被插入,而且已经被挂载。 mFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); mFilter.addDataScheme("file");//必须要添加此行,否则没有效果 this.registerReceiver(myActionBroadcastReceiver, mFilter); }

    2.定义广播接受者

    public class SdcardActionBroadcastReceiver extends BroadcastReceiver { public Handler handler; public SdcardActionBroadcastReceiver(Handler handler){ this.handler = handler; } @Override public void onReceive(Context arg0, Intent intent) { String action = intent.getAction(); if(action.equals(Intent.ACTION_MEDIA_EJECT)){ handler.sendEmptyMessage(1); }else if(action.equals(Intent.ACTION_MEDIA_MOUNTED)){ handler.sendEmptyMessage(2); } } }

    3.Activity接收广播后响应操作

    public Handler myhander = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 2://sd卡已插入 Toast.makeText(GradeDataActivity.this, getResources().getString(R.string.grade_toast_insert_sdcare), Toast.LENGTH_SHORT).show(); break; case 1://sd卡已拔出 Toast.makeText(GradeDataActivity.this, getResources().getString(R.string.grade_toast_remove_sdcare), Toast.LENGTH_SHORT).show(); break; default: break; } }; };
    转载请注明原文地址: https://ju.6miu.com/read-1200200.html
    最新回复(0)