Android7 0 之 直接啟動

2021-07-24 13:03:45 字數 2471 閱讀 6318

搬運工......

當裝置已開機但使用者尚未解鎖裝置時,android n 將在安全的「直接啟動」模式下執行。 為支援此操作,系統為資料提供兩個儲存位置:

預設情況下,應用不會在「直接啟動」模式下執行。如果您的應用需要在「直接啟動」模式下進行操作,您可以註冊在此模式期間應執行的應用元件。 對於需要在「直接啟動」模式下執行的應用,常見的一些用例包括:

如果您的應用在「直接啟動」模式下執行時需要訪問資料,則使用裝置加密儲存。 裝置加密儲存包含使用金鑰加密的資料,僅在裝置已成功執行驗證啟動後金鑰才可用。

對於應使用與使用者憑據(如 pin 或密碼)關聯的金鑰加密的資料,請使用憑據加密儲存。憑據加密儲存僅在使用者已成功解鎖裝置後可用,直到使用者再次重啟裝置。 如果使用者在解鎖裝置後啟用鎖定螢幕,則不會鎖定憑據加密儲存。

應用必須先向系統註冊其元件,然後才能在「直接啟動」模式下執行或訪問裝置加密儲存。 應用通過將元件標記為「加密感知」來註冊系統。 若要將您的元件標記為加密感知,請在清單中將android:directbootaware屬性設為 true。

當裝置重啟後,加密感知元件可以註冊接收來自系統的locked_boot_completed廣播訊息。 此時裝置加密儲存可用,您的元件可以在「直接啟動」模式下執行需要執行的任務,例如觸發已設定的鬧鈴。

以下**段展示如何將broadcastreceiver註冊為加密感知並在應用清單中為locked_boot_completed新增 intent 過濾器:

android:directbootaware

="true"

>

... 

android:name

="android.intent.action.locked_boot_completed"

/>

在使用者解鎖裝置後,所有元件均可訪問裝置加密儲存以及憑據加密儲存。

要訪問裝置加密儲存,請通過呼叫context.createdeviceprotectedstoragecontext()建立另乙個context例項。使用此上下文執行的所有儲存 api 呼叫均訪問裝置加密儲存。 以下示例訪問裝置加密儲存並開啟現有應用資料檔案:

context

directbootcontext =.

createdeviceprotectedstoragecontext

();fileinputstream

instream

=directbootcontext

.openfileinput();

// use instream to read content...

僅針對在「直接啟動」模式下必須可訪問的資訊使用裝置加密儲存。請勿將裝置加密儲存用作通用加密儲存。對於專有使用者資訊,或在「直接啟動」模式下不需要的加密資料,請使用憑據加密儲存。

重啟後一旦使用者解鎖了裝置,您的應用即可切換至訪問憑據加密儲存,並使用依賴使用者憑據的常規系統服務。

為了在重啟後使用者解鎖裝置時收到通知,請從乙個正在執行的元件註冊broadcastreceiver以偵聽action_user_unlocked訊息。 或者,您可以接收現有action_boot_completed訊息,該訊息現在表明裝置已啟動,且使用者已解鎖裝置。

您可以通過呼叫usermanager.isuserunlocked()直接查詢使用者是否已解鎖裝置。

如果使用者將其裝置更新為使用「直接啟動」模式,您可能需要將現有資料遷移到裝置加密儲存。 使用context.movesharedpreferencesfrom()context.movedatabasefrom()在憑據加密儲存和裝置加密儲存之間遷移首選項和資料庫資料。

請運用您的最佳判斷來決定從憑據加密儲存向裝置加密儲存遷移哪些資料。 您不應將專有使用者資訊(如密碼或許可權令牌)遷移到裝置加密儲存。 。在某些情況下,您可能需要在這兩個加密儲存中管理單獨的資料集。

使用新的「直接啟動」模式測試您的加密感知應用。有兩種方式可以啟用直接啟動模式:

注意:啟用「直接啟動」將擦除裝置上的所有使用者資料。

在已安裝 android n 的受支援的裝置上,通過執行以下操作之一啟用「直接啟動」:

另外,還提供模擬直接啟動模式,以防您需要在測試裝置上切換模式。 模擬模式應僅在開發期間使用,否則可能導致資料丟失。 若要啟用模擬直接啟動模式,請在裝置上設定鎖定模式,如果在設定鎖定模式時系統提示安全啟動螢幕,則選擇「no thanks」,然後使用以下 adb shell 命令:

$ adb shell sm set-emulate-fbe true
若要關閉模擬直接啟動模式,請使用以下命令:

$ adb shell sm set-emulate-fbe false
使用這些命令會導致裝置重啟。

Android7 0呼叫相機

從android7.0開始,android對訪問檔案的許可權收回,所以如果我們要在應用件共享檔案,應該傳送一項content uri,並對這個uri授予臨時訪問的許可權。而對這個uri授權最簡單的方式就是使用fileprovider類。具體的操作步驟是 1.建立乙個path檔案 在res下邊建立乙個...

Android 7 0呼叫相機方法

android 7.0之後呼叫相機的方式不允許以file 的方式呼叫,需要以共享檔案的方式content url contentvalues contentvalues new contentvalues 1 contentvalues.put mediastore.images.media.dat...

android 7 0原始碼編譯

vr平台daydream等等。android系統越來越強大,但是再國內還沒有支援7.x的手機,作為一名開發者總得先體驗寫這個強大的版本啊,下面就來聊聊這個版本如何編譯以及執行。mkdir bin path bin path curl bin repo chmod x bin repo wget ts...