Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menerapkan Manajemen Perangkat

Bagian ini menjelaskan cara mengaktifkan dan memvalidasi fitur pengelolaan perangkat yang diperlukan untuk menyiapkan perangkat untuk profil terkelola. Ini juga mencakup kasus pengguna pemilik perangkat yang penting dalam lingkungan perusahaan.

Selain kode AOSP, perangkat memerlukan komponen berikut untuk berfungsi dengan profil terkelola.

Persyaratan Umum

Perangkat yang dimaksudkan untuk mendukung manajemen perangkat harus memenuhi persyaratan umum berikut.

Nilai HAL termal

Android 7.0 dan yang lebih baru menyertakan dukungan untuk HardwarePropertiesManager API, sebuah API pemantauan dan pelaporan kesehatan perangkat yang memungkinkan aplikasi untuk menanyakan status perangkat keras perangkat. API ini terkena melalui android.os.HardwarePropertiesManager dan membuat panggilan melalui HardwarePropertiesManagerService ke perangkat keras HAL termal ( hardware/libhardware/include/hardware/thermal.h ). Ini adalah API dilindungi, berarti Policy Controller (DPC) aplikasi hanya pemilik perangkat / profil Perangkat dan arus VrListenerService dapat menyebutnya.

Untuk mendukung HardwarePropertiesManager API, implementasi HAL termal perangkat harus dapat melaporkan nilai berikut:

Nilai Skala Pelaporan Mengaktifkan
Suhu [CPU|GPU|Baterai|Kulit Perangkat] Suhu komponen dalam derajat Celcius Aplikasi dapat memeriksa suhu perangkat dan suhu pelambatan/penonaktifan komponen
CPU aktif/total waktu diaktifkan Waktu dalam milidetik Aplikasi dapat memeriksa penggunaan CPU per inti
Kecepatan kipas RPM Aplikasi dapat memeriksa kecepatan kipas

Implementasi harus menangani situasi nilai pelaporan dengan benar saat inti (atau GPU, baterai, kipas) offline atau dicolokkan/dicabut.

Mengaktifkan pengelolaan perangkat

Untuk mengaktifkan manajemen perangkat, memastikan berikut uses-features dinyatakan:

  • android.software.device_admin
  • android.software.managed_users (fitur dinyatakan jika dan hanya jika perangkat memiliki minimal 2 GB memori.)

Untuk mengkonfirmasi ini uses-feature nilai telah dinyatakan pada perangkat, jalankan: adb shell pm list features .

Hanya aplikasi penting

Secara default, hanya aplikasi yang penting untuk pengoperasian profil yang benar yang diaktifkan sebagai bagian dari penyediaan perangkat terkelola. Perlu diingat, semua contoh contoh _managed_profile.xml file di bawah ini hanya relevan jika android.software.managed_users dinyatakan. OEM harus memastikan profil atau perangkat yang dikelola memiliki semua aplikasi yang diperlukan dengan memodifikasi:

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

Diperlukan dan dianulir aplikasi untuk pengguna berhasil diterapkan untuk pengguna sekunder dibuat melalui DevicePolicyManager#createAndManageUser .

Contoh dari perangkat Nexus

Android 8.x dan sebelumnya

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

Android 9 dan lebih tinggi

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 dan sebelumnya

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

Android 9 dan lebih tinggi

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>

Persyaratan peluncur

Anda harus memperbarui Peluncur untuk mendukung aplikasi lencana dengan lencana ikon (disediakan di AOSP untuk mewakili aplikasi yang dikelola) dan elemen antarmuka pengguna lencana lainnya seperti terbaru dan pemberitahuan. Jika Anda menggunakan launcher3 di AOSP tanpa modifikasi, maka Anda mungkin sudah mendukung fitur badging ini.

Persyaratan NFC

Perangkat dengan NFC harus mengaktifkan NFC selama pengalaman siap pakai (yaitu, wizard penyiapan) dan dikonfigurasi untuk menerima maksud penyediaan terkelola:

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

Persyaratan penyiapan

Perangkat yang menyertakan pengalaman out-of-box (yaitu, wizard penyiapan) harus menerapkan penyediaan pemilik perangkat. Saat pengalaman out-of-box terbuka, itu harus memeriksa apakah proses lain (seperti penyediaan pemilik perangkat) telah menyelesaikan penyiapan pengguna dan, jika demikian, itu harus mengaktifkan maksud rumah dan menyelesaikan penyiapan. Intent ini ditangkap oleh aplikasi penyediaan, yang kemudian menyerahkan kontrol ke pemilik perangkat yang baru disetel.

Untuk memenuhi persyaratan penyiapan, tambahkan kode berikut ke aktivitas utama penyiapan perangkat:

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

       ...
   }