抢在“go短信”前面,接收短信!!!
来点题外话先:
自从注册博客园之后,一直是抱着过来学习的想法,平时的需求都能从各位的文章中搜索到,所以自己也没发过博文。这次是碰上了个问题,而且找不到答案,所以写点东西记录下来,就当是自己开发中的笔记了。
好,开始正文。
这两天自己在学着写一个短信拦截的功能,关于这个东西,估计大家耳朵都听出茧子了,嘿嘿。用过go短信的应该知道(推荐一下go短信,用起来很舒服的一个软件),在“接收信息设置”里面有一个“屏蔽其他短信应用的通知”这个选项,在我用最最基本的方法实现了之后,就是在manifest中注册个receiver,在onReceive方法里判断对应的action,然后在随意进行处理,发现调试的日志里居然没有任何输出,才想到是go短信里面的这个屏蔽功能起了作用,把屏蔽选项设成false就可以正常在我的程序中拦截短信了。
但是这样很不好啊,因为一个第三方软件就让我自己的软件不起作用了可不行,于是就开始网上搜索。一系列的文章看下来,几乎都是设置receiver优先级的方法,唯一的区别就是priority的值不同而已,我尝试过把priority设成0xFFFFFFFF也不成。于是就开始抓狂了。我也想过这个三方软件的冲突是不是解决不了,但是我收到过的短信当中,有几条是广告,而这几条广告是360帮我截获的,并没有被go短信获取,这就说明冲突是能解决的。于是继续找办法。
最后是师父帮我点拨了一下(崇拜~~~),让我试试动态注册的方法,没想到还真的能成功拦截了。动态注册的方法我就不说了,网上一堆一堆的。思路就是,可以开启一个后台服务,然后在服务开始的时候就动态注册一个receiver,当然权限也设置高点,保险起见。至于为什么动态注册会比静态注册要先接收到广播,这个我还不得而知,至于go短信是否用的是静态注册,我也不知道。这里只能先提供一种更加能优先截获短信的方法。
第一篇,没什么技术含量,只是提供一个解决方案,请多多包含。
本人菜鸟,文笔和技术都还不过关,请多多指教~~~~~~~~ ^_^
posted on 2011-09-28 16:04 leftwing 阅读(2042) 评论(20) 编辑 收藏 举报