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

Mar*_*key 1 boot android

我需要一个服务在我的应用程序的后台运行,我希望它在手机开机时自动启动.我有通常的BOOT_COMPLETED意图过滤器但是会发生什么......

  1. 我打开手机.
  2. 它启动直到锁定屏幕.
  3. 我通过锁屏.
  4. 后台工作开始了.

在我被要求锁定屏幕之前,我想要/需要工作.

这是在运行Android N的Pixel上.

干杯.

小智 5

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

本文讨论它的工作原理和示例用例(预定通知,SMS应用程序等),但您的代码缺失的是a receiverintent-filterfor ACTION_LOCKED_BOOT_COMPLETED.

基本上,您需要在清单中使用以下代码

<receiver
  android:directBootAware="true" >
  ...
  <intent-filter>
    <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
  </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

如果您需要更多帮助,请告诉我们!

  • 即使有了这个“意图过滤器”,它也无法按预期工作。 (2认同)