Android的SD卡插拔广播
16lz
2021-01-26
最近项目里面需要监听SD卡的插拔,网上搜广播的时候,很多东西都没提到。我将这些东西记录下来,以备后用。
1. 如果是单个Activity监听广播,则在Activity的onCreate方法里面,用下面的代码注册广播
IntentFilter iFilter = new IntentFilter();iFilter.addAction(Intent.ACTION_MEDIA_EJECT);iFilter.addDataScheme("file");registerReceiver(mBroadcastReceiver , iFilter);
<receiver android:name=".activities.widget.UsbBroadCastReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_EJECT" /> <data android:scheme="file"/> </intent-filter></receiver>
3. 如果广播别别的程序截获,导致你无法收到广播,给intent-filter加上一个 android:priority="1000"的属性就行,添加位置,参照上面的代码。
4. 我的项目里面是整个程序监听广播,
①Android Manifest的代码如下:
<receiver android:name=".activities.widget.UsbBroadCastReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_EJECT" /> <data android:scheme="file"/> </intent-filter></receiver>
/** * @createDate * @version v0.5.1 */public class UsbBroadCastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(Intent.ACTION_MEDIA_EJECT)){ ToastUtil.ToastShort(context, R.string.usb_sdeject); }else if(action.equals(Intent.ACTION_MEDIA_MOUNTED)){ ToastUtil.ToastShort(context, R.string.usb_sdconnect); } }}
更多相关文章
- Android(安卓)通过广播接受者监听用户的短信
- android activity/service开机后自动运行 (转)
- Android锁屏状态下点亮屏幕并弹窗提醒
- android 引入 iconv 库
- Android在代码中设置控件的drawableLeft等
- [置顶] android 内存泄露那些事情之游标、文件、网络连接、广播(
- flutter methodchannel调用原生方法,实现原生插件
- Android(安卓)退出程序的若干方法总结
- android实现双击事件监听