监控系统Sdcard卡插拔广播

来源:互联网 发布:站长站源码 编辑:程序博客网 时间:2024/06/06 14:05

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;            }        };    };
0 0
原创粉丝点击