对于android拦截短信的一些疑问
2015-10-10 11:26
381 查看
最近折腾android4.4短信拦截的问题,要求在app上收到短信的时候弹出提示,并显示的功能。
然后找到了使用broadcastreceiver和contentprovider两种方法,那么问题来了:
当我用contentprovider和broadcast同时去处理的时候发现:如果使用contentprovider对短信进行处理(标记成已读或者删除),那么在broadcastreceiver中就收不到消息了(android4.4以上版本)。
但是如果我不做处理的时候,看log日志,明明是broadcastreceiver先执行的。
由于abortbroadcast在android4.4以上版本的短信功能中不可用,我在android4.4以下版本测试在broadcastreceiver中使用abortbroadcast,结果contentprovider就收不到了。
这点是很疑惑的。
另外我还用到了vivo x3l的手机,这个手机默认是自带权限管理软件的,而且在这个手机上使用短信的broadcastreceiver的时候有个奇葩的地方,就是他虽然是4.3的系统,我也开启了读短信的权限,我去拦截不到broadcast,后来我使用contentprovider操作读写短信的时候允许了读写和删除短信以及收发短信的权限,结果就可以收到这个broadcast了,可以简单地认为这个手机上你的app必须获取到短信的所有权限你才可以收到短信的broadcast,而小米和华为手机上不需要,真丫丫的蛋疼啊。
然后找到了使用broadcastreceiver和contentprovider两种方法,那么问题来了:
当我用contentprovider和broadcast同时去处理的时候发现:如果使用contentprovider对短信进行处理(标记成已读或者删除),那么在broadcastreceiver中就收不到消息了(android4.4以上版本)。
但是如果我不做处理的时候,看log日志,明明是broadcastreceiver先执行的。
由于abortbroadcast在android4.4以上版本的短信功能中不可用,我在android4.4以下版本测试在broadcastreceiver中使用abortbroadcast,结果contentprovider就收不到了。
这点是很疑惑的。
另外我还用到了vivo x3l的手机,这个手机默认是自带权限管理软件的,而且在这个手机上使用短信的broadcastreceiver的时候有个奇葩的地方,就是他虽然是4.3的系统,我也开启了读短信的权限,我去拦截不到broadcast,后来我使用contentprovider操作读写短信的时候允许了读写和删除短信以及收发短信的权限,结果就可以收到这个broadcast了,可以简单地认为这个手机上你的app必须获取到短信的所有权限你才可以收到短信的broadcast,而小米和华为手机上不需要,真丫丫的蛋疼啊。
相关文章推荐
- Android 利用精简Zxing实现条形码/二维码 扫描
- android之interpolator的用法详解
- Android启动线程的几种方法
- Android Wifi获取组播
- Android - 应用程序的生命周期
- 倍数提高工作效率的Android Studio奇技
- android 自定义通知
- Android解析xml文件
- android 修改主题背景色
- Android listview checkbox 再次进入activity 保留checkbox状态
- Android开发最佳实践《IT蓝豹》
- android基于百度云消息推送通知集成
- Android Service完全解析
- Android 控制EditText输入为英文或数字
- Android 拦截onClick事件
- 使用ARM DS-5与Dstream StreamLine进行Android底层性能分析的一个实例
- Android开发最佳实践<IT蓝豹>
- Android 调用已安装市场,进行软件评分的功能实现
- Android LayoutInflater的inflate方法中attachToRoot的作用
- android-percent-support-extend