Android 9 的企業應用程式功能

本頁提供企業 API、功能和行為的總覽 Android 9 的各項功能變更。

工作資料夾使用者介面

Android 9 (API 級別 28) 預設包含使用者介面變更 啟動器,協助使用者區分個人和工作應用程式。裝置製造商 有助於使用者應用程式。 我們也讓裝置使用者能夠更輕鬆地開啟或關閉工作資料夾: 包括啟動器工作分頁中的切換鈕。

圖 1. 預設啟動器的「個人」分頁和工作分頁 支援工作資料夾切換功能

佈建工作資料夾和受管理的裝置時,Android 9 會包含下列內容 動畫插圖:協助裝置使用者瞭解這些功能。

切換工作資料夾中的應用程式

Android 9 包含的 API,可在另一個應用程式中啟動另一個應用程式執行個體 設定檔,協助使用者切換帳戶。舉例來說,電子郵件應用程式可以 提供使用者介面,讓使用者切換個人資料夾和工作 設定檔來存取兩個電子郵件帳戶。所有應用程式都能呼叫這些 API 來啟動 相同應用程式的主要活動 (如果已安裝於其他設定檔中)。目的地: 將跨設定檔帳戶切換新增至應用程式,請按照下列步驟操作: 方法 CrossProfileApps 類別:

  1. 呼叫 getTargetUserProfiles() 即可取得 您可以在設定檔中啟動另一個應用程式執行個體這個方法會檢查 應用程式安裝於設定檔中。
  2. 呼叫 getProfileSwitchingIconDrawable() 取得可用來代表其他商家檔案的圖示。
  3. 呼叫 getProfileSwitchingLabel() 即可取得 提示使用者切換設定檔的本地化文字。
  4. 呼叫 startMainActivity() 來啟動 放在另一個設定檔中

檢查應用程式的 含有 ACTION_MAIN 意圖動作的資訊清單檔案,並納入 CATEGORY_LAUNCHER 意圖類別。

透過程式輔助方式開啟或關閉工作資料夾

預設啟動器 (或具備 MANAGE_USERS 權限的應用程式; MODIFY_QUIET_MODE) 可以透過撥打電話的方式開啟或關閉工作資料夾 UserManager.requestQuietModeEnabled()。你可以 檢查傳回值,瞭解使用者是否需要確認 憑證。因為這類變更可能不會發生 立即聆聽 ACTION_MANAGED_PROFILE_AVAILABLEACTION_MANAGED_PROFILE_UNAVAILABLE。 廣播訊息,判斷更新使用者介面的時機。

您的應用程式可以呼叫 UserManager.isQuietModeEnabled()

鎖定任何應用程式到裝置上

自 Android 9 起,裝置擁有者和設定檔擁有者 (次要使用者) 只要將應用程式設為鎖定工作模式,即可在裝置螢幕上鎖定任何應用程式。 應用程式開發人員先前必須新增對鎖定任務的支援 模式。Android 9 也擴充了鎖定任務 透過 API 來分析非關聯次要使用者的擁有者。步驟如下 將應用程式鎖定在畫面上:

  1. 呼叫 DevicePolicyManager.setLockTaskPackages() 即可: 將應用程式加入鎖定任務模式的許可清單。
  2. 呼叫 ActivityOptions.setLockTaskEnabled() 即可啟動 讓已加入許可清單的應用程式進入鎖定工作模式。

如要停止執行鎖定任務模式的應用程式,請將應用程式從鎖定任務模式中移除 許可清單 DevicePolicyManager.setLockTaskPackages()

啟用系統 UI 功能

啟用鎖定任務模式後,裝置擁有者和設定檔擁有者即可啟用 才能在裝置上呼叫特定系統 UI 功能 DevicePolicyManager.setLockTaskFeatures(),然後傳送 功能旗標的位元欄位:

您可以呼叫 DevicePolicyManager.getLockTaskFeatures() ,瞭解裝置在鎖定任務模式 裝置結束鎖定任務模式時,裝置就會回到授權任務的狀態。 。

隱藏錯誤對話方塊

在某些環境中,例如零售商展示或公開資訊 顯示時,您可能不想要向使用者顯示錯誤對話方塊。裝置政策 控制器 (DPC) 可能會在當機或沒有回應時隱藏系統錯誤對話方塊 方法是將 DISALLOW_SYSTEM_ERROR_DIALOGS 使用者 第二則是資源限制這項限制會影響裝置擁有者套用的所有對話方塊 但只有主要或次要使用者中顯示的錯誤對話方塊會遭到抑制 只有商家檔案擁有者套用限制時。這項限制並未 工作資料夾

在 Android 9 中,應用程式可在沉浸式全螢幕環境中執行 模式:在以下時間過後不顯示提醒泡泡 鎖定任務模式。提醒泡泡是使用者首次啟動時顯示的面板 :說明如何退出沉浸模式。

使用專用裝置支援多位使用者

Android 9 引進了「暫時使用者」概念, 裝置 (原稱 COSU 裝置)。暫時使用者 適用於多位使用者共用單一影片的短期使用者 專用。這包括在媒體庫等裝置上的公開使用者工作階段 提供餐旅服務資訊站或 一組裝置上的使用者,例如輪班人員。

暫時使用者應在背景建立。建立名稱為 裝置上的次要使用者,並移除該使用者 (以及相關聯的應用程式和 資料)。如要建立 臨時使用者,裝置擁有者可以:

  1. 在呼叫時設定 MAKE_USER_EPHEMERAL 標記 DevicePolicyManager.createAndManageUser()
  2. 呼叫 DevicePolicyManager.startUserInBackground() 在背景啟動暫時使用者

請注意,指定 Android 9 的應用程式應擷取 撥打電話時為 UserManager.UserOperationException createAndManageUser()。呼叫例外狀況的 getUserOperationResult() 方法,瞭解 無法建立使用者。

接收事件通知

DeviceAdminReceiver 會收到以下項目的通知: 以下事件:

向使用者顯示活動訊息

裝置擁有者可以設定要向使用者顯示的訊息 開始和結束他們的工作階段:

登出並停止使用者

裝置擁有者可以使用 DevicePolicyManager.setLogoutEnabled() 用於指定 允許次要使用者登出。如要確認登出功能是否已啟用,請呼叫 DevicePolicyManager.isLogoutEnabled()

次要使用者的設定檔擁有者可以呼叫 DevicePolicyManager.logoutUser():停止次要使用者,然後 請切換回主要使用者。

裝置擁有者可以使用 DevicePolicyManager.stopUser() 停止 指定的次要使用者

套件快取

為了簡化一組固定使用者在共用裝置上的佈建作業, 例如,排班人員使用的裝置 則可能會快取已執行 多使用者工作階段的需要程式碼配置:

  1. 致電 DevicePolicyManager.setKeepUninstalledPackages()敬上 指定要保留為 APK 的套件清單。 包裹, 呼叫 DevicePolicyManager.getKeepUninstalledPackages()

  2. 呼叫 DevicePolicyManager.installExistingPackage() 安裝移除後所保留的套件 setKeepUninstalledPackages()

,瞭解如何調查及移除這項存取權。

其他方法和常數

Android 9 還包含下列方法和常數,進一步支援 共用裝置上的使用者工作階段:

清除套件資料並移除帳戶

裝置擁有者和設定檔擁有者可以撥打電話 clearApplicationUserData():用於清除使用者資料 針對特定套件。如要從 AccountManager,裝置和個人資料擁有者可以撥打電話 removeAccount()

使用者限制,並進一步掌控各項設定

Android 9 針對裝置政策控制器 (DPC) 導入了一系列使用者限制 可在裝置上設定 APN、時間和時區,以及系統設定。

設定 APN

裝置擁有者可以在 DevicePolicyManager 類別來設定 APN 裝置:

設定時間和時區

裝置擁有者可以在 設定時間和時區的 DevicePolicyManager 類別 裝置:

強制執行使用者限制的重要設定

Android 9 新增了使用者限制,用於停用系統功能和設定。目的地: 新增限制,通話 DevicePolicyManager.addUserRestriction(),其中包含以下其中一項: 下列 UserManager 常數:

如果 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()

如要轉移受管理裝置或工作資料夾的擁有權,請按照下列步驟操作: 相同:

  1. 來源 DPC 會檢查目標 DPC 的版本是否支援遷移與 確認目標 DPC 的應用程式簽章與預期值相符。
  2. 來源 DPC 呼叫 transferOwnership() 來啟動 轉移。
  3. 系統會使目標 DPC 成為有效管理員, 做為受管理裝置或工作資料夾的擁有者。
  4. 目標 DPC 收到回呼 onTransferOwnershipComplete(),可供設定 使用 bundle 引數的值
  5. 如果轉移程序發生問題,系統會將擁有權還原至 來源 DPC如果來源 DPC 必須確認擁有權轉移 成功,請呼叫 isAdminActive() 來檢查來源 DPC 不再是有效管理員。

在工作資料夾中執行的所有應用程式都會收到 ACTION_PROFILE_OWNER_CHANGED在以下時間播送 個人資料擁有者有所變更。在受管理裝置上執行的應用程式會收到 ACTION_DEVICE_OWNER_CHANGED 會在 裝置擁有者變更內容。

完全受管理裝置上的工作資料夾

以裝置擁有者和設定檔擁有者的身分轉移兩個 DPC 執行個體 會發生的是兩個階段當個人資料夾和工作資料夾運作時 聯盟,請依下列順序完成轉移程序:

  1. 首先,轉移工作資料夾的擁有權。
  2. 等待 DeviceAdminReceiver 回呼 onTransferAffiliatedProfileOwnershipComplete() ,確認工作資料夾已轉移給目標 DPC。
  3. 最後,將受管理裝置的擁有權轉移給目標 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 擁有者模式或委派憑證安裝程式,則無法 請完成下列工作:

結合這些 API 後,企業就能安全地識別裝置並確認 並完整提供存取權:

  1. Android 裝置會在安全硬體中產生新的私密金鑰。 因為私密金鑰永遠不會離開安全硬體,所以它仍然不會洩露。
  2. 裝置會使用金鑰建立及傳送憑證簽署要求 (CSR)。CSR 包含一個包含 裝置 ID
  3. 伺服器會驗證憑證鏈結 (根層級為 Google 憑證) 並從認證記錄中擷取裝置中繼資料。
  4. 伺服器會確認安全硬體會保護私密金鑰並 要求裝置 ID 與企業記錄相符。伺服器也可以 確保 Android 系統和修補程式版本符合所有需求
  5. 伺服器會透過 CSR 產生憑證,然後將憑證傳送至 裝置。
  6. 裝置將憑證與私密金鑰配對 (保存在 安全硬體),讓應用程式連線至企業服務。

更多安全性 API、功能和變更

安全性記錄和網路記錄的 ID

Android 9 包括安全性和網路活動記錄中的 ID。數字 ID 每次活動都會逐次增加,方便 IT 管理員找出 造成的損失因為安全性記錄和網路記錄是分開的 集合,系統會維護個別的 ID 值。

呼叫 SecurityEvent.getId()DnsEvent.getId(),或 ConnectEvent.getId() 可取得 ID 值。系統 每當 DPC 啟用記錄功能或裝置重新啟動時,就會重設 ID。 透過呼叫擷取安全性記錄 DevicePolicyManager.retrievePreRebootSecurityLogs()敬上 而不是這些編號

安全性記錄

安全性記錄會為每個「SecurityEvent」指派記錄層級。如要取得記錄層級 呼叫 getLogLevel()。這個方法會傳回一個記錄層級值, 可以是 LEVEL_INFOLEVEL_WARNINGLEVEL_ERROR

Android 9 會將下表所列事件記錄在「安全性」 記錄檔如要查看事件的代碼,請呼叫 getTag()。目的地: 擷取事件資料,呼叫 getData()

標記 活動說明
TAG_CERT_AUTHORITY_INSTALLED 嘗試在系統的憑證儲存空間中安裝新的根憑證。
TAG_CERT_AUTHORITY_REMOVED 嘗試從系統的憑證儲存空間中移除根憑證。
TAG_CERT_VALIDATION_FAILURE Wi-Fi 憑證在連線期間未通過驗證檢查。
TAG_CRYPTO_SELF_TEST_COMPLETED 系統已完成加密編譯自我測試,
TAG_KEYGUARD_DISABLED_FEATURES_SET 管理員應用程式已停用裝置或工作資料夾螢幕鎖定功能的功能。
TAG_KEY_DESTRUCTION 嘗試刪除加密編譯金鑰。
TAG_KEY_GENERATED 嘗試產生新的加密編譯金鑰。
TAG_KEY_IMPORT 嘗試匯入新的加密編譯金鑰。
TAG_KEY_INTEGRITY_VIOLATION Android 偵測到損壞的加密或驗證金鑰。
TAG_LOGGING_STARTED 安全性記錄已開始錄製。
TAG_LOGGING_STOPPED 安全性記錄已停止記錄。
TAG_LOG_BUFFER_SIZE_CRITICAL 安全性記錄緩衝區已達其容量 90%。
TAG_MAX_PASSWORD_ATTEMPTS_SET 管理員應用程式設定允許的密碼輸入錯誤次數。
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET 管理員應用程式已設定螢幕鎖定逾時時間上限。
TAG_MEDIA_MOUNT 裝置掛架式卸除式儲存媒體。
TAG_MEDIA_UNMOUNT 裝置卸載卸除式儲存媒體。
TAG_OS_SHUTDOWN Android 系統已關閉。
TAG_OS_STARTUP Android 系統啟動,
TAG_PASSWORD_COMPLEXITY_SET 管理員應用程式設定了密碼複雜度規定。
TAG_PASSWORD_EXPIRATION_SET 管理員應用程式設定了密碼有效期限。
TAG_PASSWORD_HISTORY_LENGTH_SET 管理員應用程式設定密碼記錄長度,可禁止使用者重複使用舊密碼。
TAG_REMOTE_LOCK 管理員應用程式已鎖定裝置或工作資料夾。
TAG_USER_RESTRICTION_ADDED 管理員應用程式已設定使用者限制。
TAG_USER_RESTRICTION_REMOVED 管理員應用程式已移除使用者限制。
TAG_WIPE_FAILURE 無法抹除裝置或工作資料夾的資料。

工作資料夾螢幕鎖定驗證

從 Android 9 開始,設定檔擁有者可要求使用者設定其他鎖定方式 驗證使用者的身分 DISALLOW_UNIFIED_PASSWORD 使用者限制。目的地: 檢查使用者是否已為裝置設定相同的螢幕鎖定驗證方式 工作資料夾,通話 DevicePolicyManager.isUsingUnifiedPassword()

如果裝置設有獨立的工作資料夾螢幕鎖定畫面, DevicePolicyManager.setMaximumTimeToLock() 只會設定一個 。

開發人員工具存取權

為了協助將工作資料保留在工作資料夾中,Android Debug Bridge (ADB) 工具 無法存取工作資料夾中的目錄和檔案。

支援更多生物特徵辨識選項

Android 9 針對生物特徵辨識硬體驗證,新增 設定工作資料夾的螢幕鎖定畫面。呼叫現有 DevicePolicyManager.setKeyguardDisabledFeatures()敬上 方法搭配 KEYGUARD_DISABLE_FACEKEYGUARD_DISABLE_IRIS。 如要停用裝置提供的所有生物特徵辨識驗證方式,請新增 KEYGUARD_DISABLE_BIOMETRICS

淘汰裝置管理員政策

Android 9 會在 DPC 使用裝置時,將下列政策標示為已淘汰。 管理員。政策會繼續運作 在 Android 9 中的運作方式與先前一樣從 Android 10 版本開始 相同的政策會在裝置管理員叫用時擲回 SecurityException。

部分應用程式使用裝置管理員來進行消費者裝置管理。適用對象 例如鎖定遺失的裝置,以及抹除其中的資料。下列政策將繼續 :

如要進一步瞭解上述異動,請參閱「裝置管理員」 已淘汰

簡化 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 詳細資料:

使用佈建額外項目設定日期和時區

QR code 佈建方法支援佈建額外項目,以設定時間和 裝置時區:

清除資料選項

裝置管理員可以在移除工作時,向使用者顯示個人化訊息 個人資料或次要使用者以便裝置使用者瞭解 IT 管理員已移除工作資料夾或次要使用者。致電 wipeData(int, CharSequence),並提供短片 說明文字主要使用者或裝置擁有者呼叫時,系統 不會顯示訊息,並開始將裝置恢復原廠設定。

如要移除嵌入式 eUICC SIM 卡中的訂閱資料,請撥打 wipeData(),並在 flags 中加入 WIPE_EUICC 引數。

商家檔案擁有者適用的方法

關聯商家檔案可使用下列方法 擁有者: