网上有已经有人解释了原因 参考 https://blog.youkuaiyun.com/zhouzhengting1/article/details/50459431
因为我们发送广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
但是intent 默认会添加 FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES ,来标识一个intent是否激活处于“stoppedstate”的应用。
这就造成因为权限问题,当第一次安装的时候,不会开机自启动
三种原因,以及解决方案
- 把应用push 到 system/app目录,前提是能够adb root;adb remount
- 安装后 让应用手动点击一次,或者通过其他应用触发一次启动,以后就可以开机自启动
- sd卡中应用不会收到开机启动广播,因为现在手机很少有sd卡,不关心了