如何解决广播中SD卡和开机自启动冲突的问题
2017-05-22 14:53
375 查看
我在上一篇文章中已经介绍过如何注册监听SD卡的广播
Andriod系统程序监听SD卡的插拔 这样就会有个问题,Android开机无法自启动程序,只有插拔SD卡才会推送广播。并且这样一部分逻辑会失效,达不到我们的效果,是因为刚开机就会监听无论是内部的还是外部的SD卡。
此种情形让人很无奈,但转换下思路将是柳暗花明的感觉。我们不再在AndriodManifest.xml中注册广播了,改成开机程序自启广播发挥作用后,将在service中用代码来注册。
下面贴老掉牙的 a part of code
private void register(){
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);// sd卡被插入,且已经挂载
intentFilter.setPriority(1000);// 设置最高优先级
intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);//拔出
intentFilter.addDataScheme("file");
phoneStateReceiver = new PhoneStateReceiver();
registerReceiver(phoneStateReceiver, intentFilter);// 注册监听函数
}
Andriod系统程序监听SD卡的插拔 这样就会有个问题,Android开机无法自启动程序,只有插拔SD卡才会推送广播。并且这样一部分逻辑会失效,达不到我们的效果,是因为刚开机就会监听无论是内部的还是外部的SD卡。
此种情形让人很无奈,但转换下思路将是柳暗花明的感觉。我们不再在AndriodManifest.xml中注册广播了,改成开机程序自启广播发挥作用后,将在service中用代码来注册。
下面贴老掉牙的 a part of code
private void register(){
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);// sd卡被插入,且已经挂载
intentFilter.setPriority(1000);// 设置最高优先级
intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);//拔出
intentFilter.addDataScheme("file");
phoneStateReceiver = new PhoneStateReceiver();
registerReceiver(phoneStateReceiver, intentFilter);// 注册监听函数
}
相关文章推荐
- 解决小米手机无法收到开机广播的问题
- struts2 迭代器标签iterator嵌套 如何加选择性参数和名称冲突问题的解决
- 如何解决WAMP Server 与IIS端口冲突问题
- 一个页面放2段图片滚动代码出现冲突的问题如何解决
- [Mybatis错误集锦] 如何解决两张表中字段相同冲突问题
- 解决android3.0版本以上应用接收不到开机广播问题
- 如何解决App无法收到android开机广播
- 如何解决飞思卡尔芯片使用监控程序产生的冲突问题
- 如何解决虚拟机克隆后ip冲突问题
- 如何解决App无法收到android开机广播
- 如何在vue里面优雅的解决跨域,路由冲突问题
- 如何解决listView或scrollView+viewpager手势冲突的问题
- 解决android3.0版本号以上应用接收不到开机广播问题
- 如何解决学vue 1.0和vue 2.0冲突问题
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- scst target在设置开机自启动时所遇问题的原因及解决办法
- CentOS7/Red Hat7 NTP服务无法开机自启动问题解决
- 如何解决jquery库的冲突问题
- 如何解决windows7开机后放大镜自动启动的问题
- 如何检测和解决端口冲突问题