實施設備管理

本節介紹如何啟用和驗證為託管配置文件準備設備所需的設備管理功能。它還涵蓋了企業環境中必不可少的設備所有者用戶案例。

除了 AOSP 代碼之外,設備還需要以下組件才能與託管配置文件一起運行。

一般要求

打算支持設備管理的設備必須滿足以下一般要求。

熱 HAL 值

Android 7.0 及更高版本包括對 HardwarePropertiesManager API 的支持,這是一種設備監控和健康報告 API,使應用程序能夠查詢設備硬件的狀態。此 API 通過android.os.HardwarePropertiesManager公開,並通過HardwarePropertiesManagerService調用硬件熱 HAL ( hardware/libhardware/include/hardware/thermal.h )。它是一個受保護的 API,這意味著只有設備/配置文件所有者設備策略控制器 (DPC) 應用程序和當前VrListenerService可以調用它。

要支持 HardwarePropertiesManager API,設備熱 HAL 實現必須能夠報告以下值:

價值報告量表啟用
[CPU|GPU|電池|設備皮膚]的溫度以攝氏度為單位的組件溫度應用程序可以檢查設備溫度和組件節流/關機溫度
CPU 活動/總啟用時間以毫秒為單位的時間應用程序可以檢查每個內核的 CPU 使用率
風扇轉速轉速應用程序可以檢查風扇速度

當核心(或 GPU、電池、風扇)脫機或插入/拔出時,實現應正確處理報告值情況。

啟用設備管理

要啟用設備管理,請確保聲明了以下uses-features

  • android.software.device_admin
  • android.software.managed_users (當且僅當設備具有至少 2 GB 內存時才聲明功能。)

要確認這些uses-feature值已在設備上聲明,請運行: adb shell pm list features

僅限基本應用

默認情況下,只有對配置文件的正確操作必不可少的應用程序才會作為配置受管設備的一部分啟用。請記住,以下_managed_profile.xml文件的所有示例實例僅在聲明了android.software.managed_users時才相關。 OEM 必須通過修改以下內容來確保託管配置文件或設備具有所有必需的應用程序:

vendor_required_apps_managed_profile.xml
vendor_required_apps_managed_device.xml
vendor_disallowed_apps_managed_profile.xml
vendor_disallowed_apps_managed_device.xml
/*
 * The following are for Android 9 and higher only
 */
vendor_required_apps_managed_user.xml
vendor_disallowed_apps_managed_user.xml

託管用戶的必需和不允許的應用程序應用於通過DevicePolicyManager#createAndManageUser創建的輔助用戶。

來自 Nexus 設備的示例

Android 8.x 及更早版本

pacakages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml

安卓 9 及更高版本

frameworks/base/core/res/res/values/vendor_required_apps_managed_device.xml
<resources>
  <!-- A list of apps to be retained on the managed device -->
  <string-array name="vendor_required_apps_managed_device">
    <item>com.android.vending</item> <!--­Google Play -->
    <item>com.google.android.gms</item> <!--­Required by Play -->
    <item>com.google.android.contacts</item> <!--­Google or OEM Contacts­-->
    <item>com.google.android.googlequicksearchbox</item> <!--­Google Launcher -->
    <item>com.google.android.launcher</item> <!--­Google Launcher or OEM Launcher -->
    <item>com.google.android.dialer</item> <!--­Google or OEM dialer to enable making phone calls -->
  </string-array>
</resources>

Android 8.x 及更早版本

packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml

安卓 9 及更高版本

frameworks/base/core/res/res/values/vendor_required_apps_managed_profile.xml
<resources>
    <!-- A list of apps to be retained in the managed profile. This includes any Google experience apps required. -->
    <string-array name="vendor_required_apps_managed_profile">
        <item>com.android.vending</item> <!-- Google Play -->
        <item>com.google.android.gms</item> <!-- Required by Play -->
        <item>com.google.android.contacts</item> <!-- Google or OEM Contacts -->
    </string-array>
</resources>

啟動器要求

您必須更新 Launcher 以支持帶有圖標標記(在 AOSP 中提供以表示託管應用程序)和其他標記用戶界面元素(例如最近和通知)的標記應用程序。如果您在 AOSP 中使用launcher3而未做任何修改,那麼您可能已經支持此標記功能。

NFC 要求

具有 NFC 的設備必須在開箱即用體驗(即設置嚮導)期間啟用 NFC,並配置為接受託管供應意圖:

packages/apps/Nfc/res/values/provisioning.xml
<bool name="enable_nfc_provisioning">true</bool>
<item>application/com.android.managedprovisioning</item>

設置要求

包含開箱即用體驗(即設置嚮導)的設備應實施設備所有者配置。當開箱即用體驗打開時,它應該檢查另一個進程(例如設備所有者配置)是否已經完成了用戶設置,如果是,它應該觸發家庭意圖並完成設置。這個意圖被供應應用程序捕獲,然後將控制權交給新設置的設備所有者。

要滿足設置要求,請將以下代碼添加到設備設置的主要活動中:

@Override
   protected void onStart() {
        super.onStart();

        // When returning to a setup wizard activity, check to see if another setup process
        // has intervened and, if so, complete an orderly exit
        boolean completed = Settings.Secure.getInt(getContentResolver(),
                Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
        if (completed) {
           startActivity(new Intent(Intent.ACTION_MAIN, null)
                .addCategory(Intent.CATEGORY_HOME)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_CLEAR_TASK
                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED));
           finish();
       }

       ...
   }