最近项目里面需要监听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);        }    }}


转载自Girl is coding

更多相关文章

  1. Android(安卓)通过广播接受者监听用户的短信
  2. android activity/service开机后自动运行 (转)
  3. Android锁屏状态下点亮屏幕并弹窗提醒
  4. android 引入 iconv 库
  5. Android在代码中设置控件的drawableLeft等
  6. [置顶] android 内存泄露那些事情之游标、文件、网络连接、广播(
  7. flutter methodchannel调用原生方法,实现原生插件
  8. Android(安卓)退出程序的若干方法总结
  9. android实现双击事件监听

随机推荐

  1. 最长用最基本的MSSQL数据库备份与还原
  2. 如何创建SQL Server 2000故障转移群集
  3. SQL Server 中调整自增字段的当前初始值
  4. MDF文件在SQL Server中的恢复技术
  5. MS-SQL Server 中单引号的两种处理方法
  6. sql数据库不能直接用instr函数
  7. 显示 Sql Server 中所有表中的信息
  8. 一些 T-SQL 技巧
  9. SQL Server 的 SQL 语句导入导出大全
  10. MS-SQL Server 2005 其中三个版本的比较