【问题标题】:BOOT_COMPLETED intent not received on all devices未在所有设备上收到 BOOT_COMPLETED 意图
【发布时间】:2013-06-21 03:14:43
【问题描述】:

我创建了一个应用程序,它使用以下过滤器在接收器中接收 BOOT_COMPLETED:

<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />

我在一台设备上收到此消息,但我有另一台设备未收到此消息,尽管使用了相同的 APK。哪些特定于设备的问题可能会阻止特定设备接收此意图?有没有办法对此进行测试并制定补救措施?

【问题讨论】:

  • 具体是什么设备没有接收到这个意图?
  • 这是一个专有设备,但我正在测试的两个设备都是相同的硬件版本。我可以从 logcat 或其他方面告诉我为什么两者之间会有区别吗?

标签: android broadcastreceiver android-broadcast


【解决方案1】:

确保您正在真正完全重启。

例如,某些 HTC 设备具有“快速启动”模式,不会触发BOOT_COMPLETED,而是发送android.intent.action.QUICKBOOT_POWERON 广播。据我了解,“快速启动”模式基本上是休眠,而不是真正的断电,因此他们不会发送BOOT_COMPLETED

(为什么Intent 操作不是com.htc.action.QUICKBOOT_POWERON 是一个完整的问题......)

【讨论】:

  • Google Play 商店中的许多应用声称要重启设备时,是否会执行这种“快速启动”模式?我的设备仅在按下硬件电源开关时提供与“飞行模式”一起显示的标准“关机”功能。
  • @gonzobrains:“当 Google Play 商店中的许多应用声称要重启设备时,这种“快速启动”模式是不是?” - 打败我。您无法从没有 root 的应用程序重新启动设备,而且我通常不运行 root。 “我的设备仅提供标准的“关机”功能”——我的理解是 HTC 的“快速启动”选项是您在设置中某处切换的选项。
  • 好的。我问是因为我的 Galaxy Relay 4G 实际上提供了一个“重启”选项以及“关闭电源”,它重启设备的速度比关闭电源和重新打开电源要快得多。我不确定这是否等同于“adb reboot”或者是否有所不同。至于“重启”应用,我认为它们只是模拟重启的噱头,因为它们没有 root 访问权限。
【解决方案2】:

Android 3.1 之后的某些设备在 BOOT_COMPLETED 接收器之后不会给予应用控制权。

Google 早就说过,用户应该先从启动器启动一个活动, 在该应用程序可以做很多事情之前。防止 BOOT_COMPLETED 在启动第一个活动之前交付是相同的逻辑扩展 论据。

我不知道它在哪些设备上有所作为。

【讨论】:

  • 奇怪的是我的两台设备都是同一个硬件平台。我可以想象的唯一区别是固件版本和/或安装的其他应用程序可能会产生干扰。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2011-04-25
  • 2011-06-30
  • 1970-01-01
  • 2013-03-22
  • 2017-06-29
  • 1970-01-01
相关资源
最近更新 更多