Android BOOT_COMPLETED 在用户通过锁定屏幕之前不会触发
Android BOOT_COMPLETED doesn't fire until user has gone past lock screen
我的应用程序需要在后台 运行 服务,我希望它在 phone 打开时自动启动。
我有 BOOT_COMPLETED 的常用 intent-filter 但发生的事情是...
- 我打开 phone。
- 一直启动到锁屏
- 我通过锁屏。
- 后台作业启动。
我 want/need 在我被要求锁定屏幕之前开始的工作。
这是像素 运行 Android N.
干杯。
您的问题是由于 Android 7.0 运行 设备已开机但用户尚未解锁设备时的安全直接启动模式。这会限制凭据加密存储在用户解锁设备之前被访问。因此,您的应用必须注册才能使用设备加密存储,以便在直接启动模式期间和用户解锁设备后使用。
This article 讨论了它的工作原理和示例用例(预定通知、SMS 应用程序等),但您的代码缺少的是 receiver
和
intent-filter
对于 ACTION_LOCKED_BOOT_COMPLETED
。
基本上,您的清单中需要以下代码
<receiver
android:directBootAware="true" >
...
<intent-filter>
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
</intent-filter>
</receiver>
如果您需要更多帮助,请告诉我!
我的应用程序需要在后台 运行 服务,我希望它在 phone 打开时自动启动。 我有 BOOT_COMPLETED 的常用 intent-filter 但发生的事情是...
- 我打开 phone。
- 一直启动到锁屏
- 我通过锁屏。
- 后台作业启动。
我 want/need 在我被要求锁定屏幕之前开始的工作。
这是像素 运行 Android N.
干杯。
您的问题是由于 Android 7.0 运行 设备已开机但用户尚未解锁设备时的安全直接启动模式。这会限制凭据加密存储在用户解锁设备之前被访问。因此,您的应用必须注册才能使用设备加密存储,以便在直接启动模式期间和用户解锁设备后使用。
This article 讨论了它的工作原理和示例用例(预定通知、SMS 应用程序等),但您的代码缺少的是 receiver
和
intent-filter
对于 ACTION_LOCKED_BOOT_COMPLETED
。
基本上,您的清单中需要以下代码
<receiver
android:directBootAware="true" >
...
<intent-filter>
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
</intent-filter>
</receiver>
如果您需要更多帮助,请告诉我!