今天发现在android2.2时写的一款程序运行在android4.0上的时候无法接受开机广播(ACTION_BOOT_COMPLETED)。
后来发现是没有添加
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
的问题。
在3.1以前,android对自启动管理不是很严格,只要你的BroadcastReceiver的IntentFilter声明了
<action android:name="android.intent.action.BOOT_COMPLETED" />
就可以接收到开机广播。但是在android3.1对程序的自启动进行了规范(官方文档请点击此处)。
假如我们没有指定use-permission就无法收到开机广播。
如果你也碰到了这个问题,检查一下自己是不是忘记添加permission了吧^_^
注:如果你接收不到开机事件,在系统log里面会有一个permission denied的异常。