话说我们都知道的是我们可以静态注册USER_PRESENT这个广播,然后就可以让你的程序在被用户关掉后重启,但是小弟我遇到一[size=13px]个问题就是我在manifest中静态注册这个广播,运行后良好,但是我在【系统设置】-->【应用程序】中选中这个程序点击【强行停止】后,在android4.0以上的真机上就不能监听到这个广播了,但是我在android2.3的手机上是可以监听得到的,网上也没有找到解决方法,求大神~~
android?4.0 USER_PRESENT 监听不到
------解决方案--------------------
楼主,这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。
原因如下:
谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。
当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。