實施設備管理

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

除了 AOSP 代碼之外,設備還需要以下組件才能使用託管配置文件。

一般要求

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

熱 HAL 值

Android 7.0 及更高版本包括對 HardwarePropertiesManager API 的支持,這是一種設備監控和健康報告 API,使應用程序能夠查詢設備硬件的狀態。此API是通過暴露android.os.HardwarePropertiesManager並通過使得呼叫HardwarePropertiesManagerService硬件熱HAL( hardware/libhardware/include/hardware/thermal.h )。這是一個受保護的API,這意味著只有設備/ profile文件所有者設備政策控制器(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

Android 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

Android 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 中提供以表示託管應用程序)和其他徽章用戶界面元素(例如最近和通知)的徽章應用程序。如果您使用launcher3在AOSP沒有修改,那麼你可能已經支持此徽章功能。

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();
       }

       ...
   }