Android BOOT_COMPLETED在用户超过锁定屏幕之前不会触发

时间:2017-03-31 15:55:26

标签: android boot

我需要一个服务才能在我的应用程序的后台运行,我希望它在手机开机时自动启动。 我已经获得了BOOT_COMPLETED的常用intent-filter但是会发生什么......

  1. 我打开手机。
  2. 启动直到锁定屏幕。
  3. 我通过锁定屏幕。
  4. 后台工作已启动。
  5. 在我要求锁定屏幕之前,我想要/需要这份工作。

    这是在运行Android N的Pixel上。

    干杯。

1 个答案:

答案 0 :(得分:5)

您的问题是由于Android 7.0在设备启动但用户尚未解锁设备时运行安全的直接启动模式。这会限制在用户解锁设备之前访问凭据加密存储。因此,您的应用必须注册才能使用设备加密存储,以便在直接启动模式下以及用户解锁设备后使用。

This article讨论了它的工作原理和示例用例(预定通知,短信应用等),但您的代码缺少的是receiverACTION_LOCKED_BOOT_COMPLETEDintent-filter

基本上,您需要清单中的以下代码

<receiver
  android:directBootAware="true" >
  ...
  <intent-filter>
    <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
  </intent-filter>
</receiver>

如果您需要更多帮助,请与我们联系!