SD卡插拔发生的广播
来源:互联网 发布:自学剑道软件 编辑:程序博客网 时间:2024/06/05 16:33
最近项目里面需要监听SD卡的插拔,网上搜广播的时候,很多东西都没提到。我将这些东西记录下来,以备后用。
1. 如果是单个Activity监听广播,则在Activity的onCreate方法里面,用下面的代码注册广播
- IntentFilter iFilter = new IntentFilter();
- iFilter.addAction(Intent.ACTION_MEDIA_EJECT);
- iFilter.addDataScheme("file");
- registerReceiver(mBroadcastReceiver , iFilter);
2. 如果是整个程序监听广播,则在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>
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>
Android Manifest一定要在intent-filter注意加上<data android:scheme=”file”>,否则无法监听到SD卡插拔广播,如果你在Activity里面用代码注册广播,那一定要加iFilter.addDataScheme("file")
②广播的代码如下:
- /**
- * @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);
- }
- }
- }
广播接收机代码:
- public class ScanSdReceiver extends BroadcastReceiver
- {
- @Override
- public void onReceive(Context context, Intent intent)
- {
- String action = intent.getAction();
- if (Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action))
- {
- //开始扫描,把你的代码放这里
- }
- else if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action))
- {
- //扫描结束,把你的代码放这里
- }
- }
- }
注册广播接收机,监听SDcard扫描事件
- IntentFilter intentfilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
- intentfilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
- intentfilter.addDataScheme("file");
- ScanSdReceiver scanSdReceiver = new ScanSdReceiver();
- registerReceiver(scanSdReceiver, intentfilter);
扫描SDCard
- sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
- Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath())));
0 0
- SD卡插拔发生的广播
- Android的SD卡插拔广播
- Android的SD卡插拔广播
- Android的SD卡插拔广播
- sd卡插拔广播
- 监听SD卡插拔广播
- sd卡插拔广播
- 关于sd卡插拔广播
- 【android】SD卡插拔 广播消息
- Android之SD卡插拔广播
- SD卡哈发生地方很少的发生的
- 关于sd卡挂载广播的问题
- 模拟一个Sd卡被挂载的广播
- 利用广播接收者,获取系统sd卡卸载的广播
- 自定义广播、有序广播、无序广播、监听sd卡的状态
- ping 广播ip地址发发生的一些事情
- Android 无法接收开机广播的问题(SD卡)
- Android4.4拒绝发送扫描SD卡的广播
- error--
- I2S 技术相关
- IAR-stm32新建一个工程
- SQLiteDatabase类——转载(http://www.cnblogs.com/tt_mc/archive/2010/03/09/1681540.html)
- Java问题定位
- SD卡插拔发生的广播
- ns3::UnixDatagramSocketFd::DoRecvmsg
- C++:类模板2(多个数中的最大数)
- 八数码问题有解的条件及其推广
- MATLAB中,可以用于计算数组或者矩阵元素总个数的方法
- iOS 百度地图 判断应用是否授权、地理位置的正反编码
- VIP的转移
- 高德地图_获取KEY的方法
- 使用Android获取的音乐文件数据库