2017-03-31 56 views
0

我需要一個服務在後臺運行,用於我的應用程序,並且我希望它在手機開機時自動啓動。 我已經得到了BOOT_COMPLETED通常的意圖過濾器,但發生的事情是這樣的......Android BOOT_COMPLETED不會觸發,直到用戶經過鎖定屏幕

  1. 我打開手機。
  2. 它啓動,直到鎖定屏幕。
  3. 我通過鎖定屏幕。
  4. 後臺工作啓動。

我想/需要在我被要求鎖定屏幕前開始工作。

這是在運行Android N的像素上。

乾杯。

回答

2

你的問題是由於Android 7.0運行安全的直接引導模式,當設備已經開機但用戶尚未解鎖設備。這會限制Credential加密存儲在用戶解鎖設備之前被訪問。因此,您的應用必須註冊才能使用設備加密存儲以在直接引導模式期間以及用戶解鎖設備後使用。

This article討論它的工作原理和使用案例(計劃通知,短信的應用程序等),但你的代碼缺失是ACTION_LOCKED_BOOT_COMPLETED一個receiverintent-filter

從本質上講,你需要下面的代碼在您的清單

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

讓我知道如果你需要更多的幫助!