收不到BOOT_COMPLETED广播可能的原因
(1)、BOOT_COMPLETED对应的action和uses-permission没有一起添加
(2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的,在AndroidManifest文件的manifest节点下设置程序安装到系统内存(android:installLocation=“internalOnly”);
(3)、系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播
(4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。
Android3.1之后,系统为了加强了安全性控制,应用程序安装后或是(设置)应用管理中被强制关闭后处于stopped状态,在这种状态下接收不到任何广播,除非广播带有FLAG_INCLUDE_STOPPED_PACKAGES标志,而默认所有系统广播都是FLAG_EXCLUDE_STOPPED_PACKAGES的,所以就没法通过系统广播自启动了,有想详细了解FLAG_EXCLUDE_STOPPED_PACKAGES工作原理的朋友请参考《Android 3.1增加FLAG_EXCLUDE_STOPPED_PACKAGES和FLAG_INCLUDE_STOPPED_PACKAGES机制》。所以Android3.1之后
(1)、应用程序无法在安装后自己启动
(2)、没有ui的程序必须通过其他应用激活才能启动,如它的Activity、Service、Content Provider被其他应用调用。
存在一种例外,就是应用程序被adb push you.apk /system/app/下是会自动启动的,不处于stopped状态。

还有一个原因:
第三方rom 把开机广播 拦截了;
原生的还是可以收到;
测试 安卓API, 最好用 谷歌亲儿子 测试;
国产rom, 安卓坑+国产坑, 能让你窒息;

例如小米手机: 正常情况下是收不到系统开机广播的, 因为小米手机默认屏蔽了所有开机广播的接收者,必须让用户手动在【授权管理】-》【自启动管理】里添加你的程序, 然后启动一次你的程序, 之后关机重启就可以收到系统开机广播了, 开机广播收到时间根据应用的优先级来决定, 有一定的延迟.

更多相关文章

  1. Android 完全退出应用程序实现代码
  2. android 实用javamail发送邮件(非系统自带)
  3. Android - 小功能 - Android系统详解之获取图片和视频的缩略图
  4. 设置Android程序图标
  5. Android操作系统简介
  6. Android应用程序内存优化
  7. Android——编译系统初始化设置
  8. Android SystemProperties系统属性详解
  9. 梦幻曲:Android系统启动

随机推荐

  1. Android(安卓)读写文件的N种写法
  2. Android(安卓)建立文件夹、生成文件并写
  3. Android官方入门文档[12]启动一个活动
  4. Android定义的路径全局变量
  5. android学习资料汇总
  6. Android(安卓)native crash log分析
  7. android light
  8. Android中菜单的使用
  9. android根据字体大小设置控件高度
  10. Android(安卓)Gesture Detector