本頁提供企業 API、功能和行為的總覽 Android 9 的各項功能變更。
工作資料夾使用者介面
Android 9 (API 級別 28) 預設包含使用者介面變更 啟動器,協助使用者區分個人和工作應用程式。裝置製造商 有助於使用者應用程式。 我們也讓裝置使用者能夠更輕鬆地開啟或關閉工作資料夾: 包括啟動器工作分頁中的切換鈕。
![](https://developer.android.com/static/images/about/versions/pie/p-work-profile.jpg?hl=zh-tw)
佈建工作資料夾和受管理的裝置時,Android 9 會包含下列內容 動畫插圖:協助裝置使用者瞭解這些功能。
切換工作資料夾中的應用程式
Android 9 包含的 API,可在另一個應用程式中啟動另一個應用程式執行個體
設定檔,協助使用者切換帳戶。舉例來說,電子郵件應用程式可以
提供使用者介面,讓使用者切換個人資料夾和工作
設定檔來存取兩個電子郵件帳戶。所有應用程式都能呼叫這些 API 來啟動
相同應用程式的主要活動 (如果已安裝於其他設定檔中)。目的地:
將跨設定檔帳戶切換新增至應用程式,請按照下列步驟操作:
方法
CrossProfileApps
類別:
- 呼叫
getTargetUserProfiles()
即可取得 您可以在設定檔中啟動另一個應用程式執行個體這個方法會檢查 應用程式安裝於設定檔中。 - 呼叫
getProfileSwitchingIconDrawable()
取得可用來代表其他商家檔案的圖示。 - 呼叫
getProfileSwitchingLabel()
即可取得 提示使用者切換設定檔的本地化文字。 - 呼叫
startMainActivity()
來啟動 放在另一個設定檔中
檢查應用程式的
含有 ACTION_MAIN
意圖動作的資訊清單檔案,並納入
CATEGORY_LAUNCHER
意圖類別。
透過程式輔助方式開啟或關閉工作資料夾
預設啟動器 (或具備 MANAGE_USERS
權限的應用程式;
MODIFY_QUIET_MODE
) 可以透過撥打電話的方式開啟或關閉工作資料夾
UserManager.requestQuietModeEnabled()
。你可以
檢查傳回值,瞭解使用者是否需要確認
憑證。因為這類變更可能不會發生
立即聆聽
ACTION_MANAGED_PROFILE_AVAILABLE
或
ACTION_MANAGED_PROFILE_UNAVAILABLE
。
廣播訊息,判斷更新使用者介面的時機。
您的應用程式可以呼叫
UserManager.isQuietModeEnabled()
。
鎖定任何應用程式到裝置上
自 Android 9 起,裝置擁有者和設定檔擁有者 (次要使用者) 只要將應用程式設為鎖定工作模式,即可在裝置螢幕上鎖定任何應用程式。 應用程式開發人員先前必須新增對鎖定任務的支援 模式。Android 9 也擴充了鎖定任務 透過 API 來分析非關聯次要使用者的擁有者。步驟如下 將應用程式鎖定在畫面上:
- 呼叫
DevicePolicyManager.setLockTaskPackages()
即可: 將應用程式加入鎖定任務模式的許可清單。 - 呼叫
ActivityOptions.setLockTaskEnabled()
即可啟動 讓已加入許可清單的應用程式進入鎖定工作模式。
如要停止執行鎖定任務模式的應用程式,請將應用程式從鎖定任務模式中移除
許可清單
DevicePolicyManager.setLockTaskPackages()
。
啟用系統 UI 功能
啟用鎖定任務模式後,裝置擁有者和設定檔擁有者即可啟用
才能在裝置上呼叫特定系統 UI 功能
DevicePolicyManager.setLockTaskFeatures()
,然後傳送
功能旗標的位元欄位:
LOCK_TASK_FEATURE_NONE
LOCK_TASK_FEATURE_SYSTEM_INFO
LOCK_TASK_FEATURE_HOME
LOCK_TASK_FEATURE_NOTIFICATIONS
敬上 只能與LOCK_TASK_FEATURE_HOME
合併使用。LOCK_TASK_FEATURE_KEYGUARD
LOCK_TASK_FEATURE_OVERVIEW
敬上 只能與LOCK_TASK_FEATURE_HOME
合併使用。LOCK_TASK_FEATURE_GLOBAL_ACTIONS
您可以呼叫 DevicePolicyManager.getLockTaskFeatures()
,瞭解裝置在鎖定任務模式
裝置結束鎖定任務模式時,裝置就會回到授權任務的狀態。
。
隱藏錯誤對話方塊
在某些環境中,例如零售商展示或公開資訊
顯示時,您可能不想要向使用者顯示錯誤對話方塊。裝置政策
控制器 (DPC) 可能會在當機或沒有回應時隱藏系統錯誤對話方塊
方法是將
DISALLOW_SYSTEM_ERROR_DIALOGS
使用者
第二則是資源限制這項限制會影響裝置擁有者套用的所有對話方塊
但只有主要或次要使用者中顯示的錯誤對話方塊會遭到抑制
只有商家檔案擁有者套用限制時。這項限制並未
工作資料夾
在 Android 9 中,應用程式可在沉浸式全螢幕環境中執行 模式:在以下時間過後不顯示提醒泡泡 鎖定任務模式。提醒泡泡是使用者首次啟動時顯示的面板 :說明如何退出沉浸模式。
使用專用裝置支援多位使用者
Android 9 引進了「暫時使用者」概念, 裝置 (原稱 COSU 裝置)。暫時使用者 適用於多位使用者共用單一影片的短期使用者 專用。這包括在媒體庫等裝置上的公開使用者工作階段 提供餐旅服務資訊站或 一組裝置上的使用者,例如輪班人員。
暫時使用者應在背景建立。建立名稱為 裝置上的次要使用者,並移除該使用者 (以及相關聯的應用程式和 資料)。如要建立 臨時使用者,裝置擁有者可以:
- 在呼叫時設定
MAKE_USER_EPHEMERAL
標記DevicePolicyManager.createAndManageUser()
。 - 呼叫
DevicePolicyManager.startUserInBackground()
在背景啟動暫時使用者
請注意,指定 Android 9 的應用程式應擷取
撥打電話時為 UserManager.UserOperationException
createAndManageUser()
。呼叫例外狀況的
getUserOperationResult()
方法,瞭解
無法建立使用者。
接收事件通知
DeviceAdminReceiver
會收到以下項目的通知:
以下事件:
onUserStarted()
:使用者啟動時呼叫。onUserSwitched()
:在使用者切換使用者時呼叫 都已完成onUserStopped()
:與呼叫一起 使用者停止或記錄時onUserRemoved()
。。
向使用者顯示活動訊息
裝置擁有者可以設定要向使用者顯示的訊息 開始和結束他們的工作階段:
- 使用
DevicePolicyManager.setStartUserSessionMessage()
敬上 設定要在使用者工作階段開始時顯示的訊息。目的地: 擷取訊息、呼叫DevicePolicyManager.getStartUserSessionMessage()
。 - 使用
DevicePolicyManager.setEndUserSessionMessage()
敬上 設定要在使用者工作階段結束時向使用者顯示的訊息。目的地: 擷取訊息、呼叫DevicePolicyManager.getEndUserSessionMessage()
。
登出並停止使用者
裝置擁有者可以使用
DevicePolicyManager.setLogoutEnabled()
用於指定
允許次要使用者登出。如要確認登出功能是否已啟用,請呼叫
DevicePolicyManager.isLogoutEnabled()
。
次要使用者的設定檔擁有者可以呼叫
DevicePolicyManager.logoutUser()
:停止次要使用者,然後
請切換回主要使用者。
裝置擁有者可以使用 DevicePolicyManager.stopUser()
停止
指定的次要使用者
套件快取
為了簡化一組固定使用者在共用裝置上的佈建作業, 例如,排班人員使用的裝置 則可能會快取已執行 多使用者工作階段的需要程式碼配置:
致電
DevicePolicyManager.setKeepUninstalledPackages()
敬上 指定要保留為 APK 的套件清單。 包裹, 呼叫DevicePolicyManager.getKeepUninstalledPackages()
。呼叫
DevicePolicyManager.installExistingPackage()
安裝移除後所保留的套件setKeepUninstalledPackages()
。
其他方法和常數
Android 9 還包含下列方法和常數,進一步支援 共用裝置上的使用者工作階段:
DevicePolicyManager.getSecondaryUsers()
會取得 裝置上所有次要使用者。- 「
DISALLOW_USER_SWITCH
」中的使用者限制可讓您 呼叫DevicePolicyManager.addUserRestriction()
:禁止切換使用者。 LEAVE_ALL_SYSTEM_APPS_ENABLED
是標記 適用於DevicePolicyManager.createAndManageUser()
。設定之後 使用者帳戶管理期間不會停用系統應用程式。UserManager.UserOperationException
擲回 如果無法建立使用者,則為DevicePolicyManager.createAndManageUser()
, 例外狀況包含失敗原因。
清除套件資料並移除帳戶
裝置擁有者和設定檔擁有者可以撥打電話
clearApplicationUserData()
:用於清除使用者資料
針對特定套件。如要從
AccountManager
,裝置和個人資料擁有者可以撥打電話
removeAccount()
。
使用者限制,並進一步掌控各項設定
Android 9 針對裝置政策控制器 (DPC) 導入了一系列使用者限制 可在裝置上設定 APN、時間和時區,以及系統設定。
設定 APN
裝置擁有者可以在
DevicePolicyManager
類別來設定 APN
裝置:
addOverrideApn()
updateOverrideApn()
removeOverrideApn()
getOverrideApns()
setOverrideApnEnabled()
isOverrideApnEnabled()
設定時間和時區
裝置擁有者可以在
設定時間和時區的 DevicePolicyManager
類別
裝置:
強制執行使用者限制的重要設定
Android 9 新增了使用者限制,用於停用系統功能和設定。目的地:
新增限制,通話
DevicePolicyManager.addUserRestriction()
,其中包含以下其中一項:
下列 UserManager
常數:
DISALLOW_AIRPLANE_MODE
DISALLOW_AMBIENT_DISPLAY
DISALLOW_CONFIG_BRIGHTNESS
DISALLOW_CONFIG_DATE_TIME
DISALLOW_CONFIG_LOCATION
DISALLOW_CONFIG_SCREEN_TIMEOUT
DISALLOW_PRINTING
如果 DISALLOW_CONFIG_BRIGHTNESS
和
已強制執行 DISALLOW_CONFIG_SCREEN_TIMEOUT
裝置擁有者仍可設定裝置顯示畫面
亮度、螢幕亮度
模式、螢幕逾時設定
在裝置上使用 API
DevicePolicyManager.setSystemSetting()
。
計量付費資料
裝置擁有者和設定檔擁有者可防止應用程式使用裝置的
使用計量付費數據網路若使用者
不易耗用大量數據用量、數據用量上限或電池電力
效能問題如要防止應用程式使用計量付費網路,請呼叫
DevicePolicyManager.setMeteredDataDisabledPackages()
敬上
傳遞套件名稱清單如要擷取目前受限制的應用程式,請呼叫
DevicePolicyManager.getMeteredDataDisabledPackages()
。
如要進一步瞭解 Android 中的計量付費資料,請參閱最佳化網路資料 用量:
遷移裝置政策控制器 (DPC)
裝置政策控制器 (DPC) 可以轉移裝置擁有權,或 複製到其他裝置政策控制器 (DPC) 上你可能必須轉移擁有權,才能移動某些功能 Android Management API:從 停用 DPC,或協助 IT 管理員遷移至 EMM。因為您 變更裝置政策控制器 (DPC) 擁有權時,您無法使用這項功能變更 例如從受管理的裝置遷移至工作資料夾 反之亦然
您可以使用裝置管理員政策 XML 資源進行以下操作:
表示這個 DPC 版本支援遷移功能。目標裝置政策控制器 (DPC)
加入具有名稱為 的元素可以獲得擁有權
<support-transfer-ownership>
。以下範例說明如何在
DPC 的裝置管理員 XML 檔案:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<support-transfer-ownership />
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
</uses-policies>
</device-admin>
如果想將擁有權遷移至新版 DPC 應用程式,DPC 可以檢查目標 DPC 是否
版本支援透過呼叫 DeviceAdminInfo
方法進行遷移
supportsTransferOwnership()
。轉移之前
後,DPC 就必須透過
比較應用程式簽名PackageManager
類別包括
來處理程式碼簽署簽章。
Android 透過擁有權機制維護 DPC 來源系統和使用者政策
轉移:DPC 不需進行遷移。來源 DPC 可將自訂資料傳送至
在 PersistableBundle
中使用鍵/值組合為目標 DPC。執行
成功傳輸後,目標 DPC 可以呼叫
DevicePolicyManager.getTransferOwnershipBundle()
。
如要轉移受管理裝置或工作資料夾的擁有權,請按照下列步驟操作: 相同:
- 來源 DPC 會檢查目標 DPC 的版本是否支援遷移與 確認目標 DPC 的應用程式簽章與預期值相符。
- 來源 DPC 呼叫
transferOwnership()
來啟動 轉移。 - 系統會使目標 DPC 成為有效管理員, 做為受管理裝置或工作資料夾的擁有者。
- 目標 DPC 收到回呼
onTransferOwnershipComplete()
,可供設定 使用bundle
引數的值 - 如果轉移程序發生問題,系統會將擁有權還原至
來源 DPC如果來源 DPC 必須確認擁有權轉移
成功,請呼叫
isAdminActive()
來檢查來源 DPC 不再是有效管理員。
在工作資料夾中執行的所有應用程式都會收到
ACTION_PROFILE_OWNER_CHANGED
在以下時間播送
個人資料擁有者有所變更。在受管理裝置上執行的應用程式會收到
ACTION_DEVICE_OWNER_CHANGED
會在
裝置擁有者變更內容。
完全受管理裝置上的工作資料夾
以裝置擁有者和設定檔擁有者的身分轉移兩個 DPC 執行個體 會發生的是兩個階段當個人資料夾和工作資料夾運作時 聯盟,請依下列順序完成轉移程序:
- 首先,轉移工作資料夾的擁有權。
- 等待
DeviceAdminReceiver
回呼onTransferAffiliatedProfileOwnershipComplete()
,確認工作資料夾已轉移給目標 DPC。 - 最後,將受管理裝置的擁有權轉移給目標 DPC。
延後無線更新 (OTA)
裝置擁有者可將 OTA 系統更新延後到裝置上,最長可達 90 天 在重要期間 (例如 節日)。系統會根據任何已定義的 60 天緩衝時間,強制執行必要的 60 天緩衝區 凍結期間,以防止裝置無限期凍結。
凍結期間:
- 裝置不會收到任何待處理的 OTA 更新通知。
- 裝置不會安裝任何作業系統的 OTA 更新。
- 裝置使用者無法在「設定」中手動檢查 OTA 更新。
如要設定凍結期間,請撥打
SystemUpdatePolicy.setFreezePeriods()
。因為凍結
經期會每年重複,則為經期的開始和結束日期
除以整數,用來計算從年初至今的天數。開始日期必須
至少在前一個凍結期間結束後的 60 天內開始。裝置
擁有者可以呼叫 SystemUpdatePolicy.getFreezePeriods()
以執行以下操作:
取得先前在系統更新政策物件設定的凍結期間清單。
已為「DevicePolicyManager.getSystemUpdatePolicy()
」
,以傳回裝置擁有者設定的任何凍結期間。
限制透過工作資料夾共用檔案
設定檔擁有者可禁止使用者將個人資料分享到工作資料夾
新增使用者限制
DISALLOW_SHARE_INTO_MANAGED_PROFILE
。
這項限制可避免下列意圖處理及分享行為:
- 個人資料夾應用程式會透過工作資料夾應用程式分享資料和檔案。
- 工作資料夾應用程式:從個人資料夾中挑選項目,例如 圖片或檔案。
設定這項限制後,DPC 仍可允許跨設定檔活動
呼叫意圖
addCrossProfileIntentFilter()
。
硬體保護的金鑰和裝置憑證
Android 9 新增的 API 來協助您使用可供您的金鑰和憑證 可讓您安全地識別裝置在個人資料擁有者或裝置上執行的 DPC 擁有者模式或委派憑證安裝程式,則無法 請完成下列工作:
- 在安全硬體 (例如可信任的硬體) 中產生金鑰和憑證
Android 裝置的執行環境 (TEE) 或安全元件 (SE)。
產生的金鑰絕不會離開安全硬體,而且可從 Android 裝置
KeyChain。致電
DevicePolicyManager.generateKeyPair()
提供 演算法 (請參閱KeyPairGenerator
) 以及您的任何硬體 ID 例如序號或 IMEI。進一步瞭解如何確保安全 硬體變更,請參閱 Android 9 安全性 強化功能 - 將憑證與現有裝置產生的金鑰建立關聯。致電
DevicePolicyManager.setKeyPairCertificate()
供應 現有金鑰和憑證鏈結的別名 (從分葉開始) 並依序納入信任鏈。 - 使用前,請確認安全硬體會保護金鑰。確認 哪些機制可保護金鑰,請按照金鑰 認證。
- 裝置擁有者和委派的憑證安裝程式可接收已簽署的憑證
裝置聲明和硬體 ID 連結致電
DevicePolicyManager.generateKeyPair()
傳送一或多項 共ID_TYPE_BASE_INFO
、ID_TYPE_SERIAL
、ID_TYPE_IMEI
或ID_TYPE_MEID
idAttestationFlags
引數。傳回的憑證包含 ID。如果您不想提供硬體 ID,請0
。商家檔案擁有者只能接收製造商資訊 (方法是ID_TYPE_BASE_INFO
)。如要確認裝置是否可以認證 ID,請呼叫isDeviceIdAttestationSupported()
。 - 防止裝置使用者濫用企業金鑰 (在非企業工作中)
即可降低金鑰憑證的選取狀態系統不包含
挑選器面板中無法選取的憑證。在您的
DeviceAdminReceiver.onChoosePrivateKeyAlias()
敬上 回呼方法,請將別名傳回企業金鑰,讓系統 會自動為使用者選取憑證。建立索引鍵 無法選取,請呼叫下列DevicePolicyManager
方法:setKeyPairCertificate()
和 針對isUserSelectable
引數傳遞false
。installKeyPair (ComponentName, PrivateKey, Certificate[], String, int)
敬上 並在以下清單中省略INSTALLKEY_SET_USER_SELECTABLE
flags
引數。
結合這些 API 後,企業就能安全地識別裝置並確認 並完整提供存取權:
- Android 裝置會在安全硬體中產生新的私密金鑰。 因為私密金鑰永遠不會離開安全硬體,所以它仍然不會洩露。
- 裝置會使用金鑰建立及傳送憑證簽署要求 (CSR)。CSR 包含一個包含 裝置 ID
- 伺服器會驗證憑證鏈結 (根層級為 Google 憑證) 並從認證記錄中擷取裝置中繼資料。
- 伺服器會確認安全硬體會保護私密金鑰並 要求裝置 ID 與企業記錄相符。伺服器也可以 確保 Android 系統和修補程式版本符合所有需求
- 伺服器會透過 CSR 產生憑證,然後將憑證傳送至 裝置。
- 裝置將憑證與私密金鑰配對 (保存在 安全硬體),讓應用程式連線至企業服務。
更多安全性 API、功能和變更
安全性記錄和網路記錄的 ID
Android 9 包括安全性和網路活動記錄中的 ID。數字 ID 每次活動都會逐次增加,方便 IT 管理員找出 造成的損失因為安全性記錄和網路記錄是分開的 集合,系統會維護個別的 ID 值。
呼叫 SecurityEvent.getId()
。
DnsEvent.getId()
,或
ConnectEvent.getId()
可取得 ID 值。系統
每當 DPC 啟用記錄功能或裝置重新啟動時,就會重設 ID。
透過呼叫擷取安全性記錄
DevicePolicyManager.retrievePreRebootSecurityLogs()
敬上
而不是這些編號
安全性記錄
安全性記錄會為每個「SecurityEvent
」指派記錄層級。如要取得記錄層級
呼叫 getLogLevel()
。這個方法會傳回一個記錄層級值,
可以是 LEVEL_INFO
、LEVEL_WARNING
或
LEVEL_ERROR
。
Android 9 會將下表所列事件記錄在「安全性」
記錄檔如要查看事件的代碼,請呼叫 getTag()
。目的地:
擷取事件資料,呼叫 getData()
。
工作資料夾螢幕鎖定驗證
從 Android 9 開始,設定檔擁有者可要求使用者設定其他鎖定方式
驗證使用者的身分
DISALLOW_UNIFIED_PASSWORD
使用者限制。目的地:
檢查使用者是否已為裝置設定相同的螢幕鎖定驗證方式
工作資料夾,通話
DevicePolicyManager.isUsingUnifiedPassword()
。
如果裝置設有獨立的工作資料夾螢幕鎖定畫面,
DevicePolicyManager.setMaximumTimeToLock()
只會設定一個
。
開發人員工具存取權
為了協助將工作資料保留在工作資料夾中,Android Debug Bridge (ADB) 工具 無法存取工作資料夾中的目錄和檔案。
支援更多生物特徵辨識選項
Android 9 針對生物特徵辨識硬體驗證,新增
設定工作資料夾的螢幕鎖定畫面。呼叫現有
DevicePolicyManager.setKeyguardDisabledFeatures()
敬上
方法搭配 KEYGUARD_DISABLE_FACE
和
KEYGUARD_DISABLE_IRIS
。
如要停用裝置提供的所有生物特徵辨識驗證方式,請新增 KEYGUARD_DISABLE_BIOMETRICS
。
淘汰裝置管理員政策
Android 9 會在 DPC 使用裝置時,將下列政策標示為已淘汰。 管理員。政策會繼續運作 在 Android 9 中的運作方式與先前一樣從 Android 10 版本開始 相同的政策會在裝置管理員叫用時擲回 SecurityException。
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
部分應用程式使用裝置管理員來進行消費者裝置管理。適用對象 例如鎖定遺失的裝置,以及抹除其中的資料。下列政策將繼續 :
如要進一步瞭解上述異動,請參閱「裝置管理員」 已淘汰。
簡化 QR code 註冊流程
內建 QR code 資料庫
Android 9 內建 QR code 庫,簡化 QR code 裝置 佈建工作IT 管理員不必再手動輸入 Wi-Fi 詳細資料來設定 裝置。因此,Android 9 可能會納入這些 Wi-Fi 詳細資料。 。IT 管理員掃描公司擁有的 QR code 裝置會自動連上 Wi-Fi 並輸入佈建 完全不必手動輸入
QR code 佈建方法支援下列佈建額外項目 指定 Wi-Fi 詳細資料:
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_WIFI_PASSWORD
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_SSID
使用佈建額外項目設定日期和時區
QR code 佈建方法支援佈建額外項目,以設定時間和 裝置時區:
清除資料選項
裝置管理員可以在移除工作時,向使用者顯示個人化訊息
個人資料或次要使用者以便裝置使用者瞭解
IT 管理員已移除工作資料夾或次要使用者。致電
wipeData(int, CharSequence)
,並提供短片
說明文字主要使用者或裝置擁有者呼叫時,系統
不會顯示訊息,並開始將裝置恢復原廠設定。
如要移除嵌入式 eUICC SIM 卡中的訂閱資料,請撥打
wipeData()
,並在 flags
中加入 WIPE_EUICC
引數。
商家檔案擁有者適用的方法
關聯商家檔案可使用下列方法 擁有者:
DevicePolicyManager.setKeyguardDisabled()
DevicePolicyManager.setStatusBarDisabled()
PackageInstaller.createSession()