最近折腾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,而小米和华为手机上不需要,真丫丫的蛋疼啊。