Mengimplementasikan jenis pengguna kustom

Android 11 telah memperkenalkan konsep jenis pengguna yang ditentukan dengan baik, yang mewakili semua jenis pengguna yang diizinkan oleh fitur Multi-pengguna Android. Dengan fitur ini, OEM dapat menyesuaikan jenis pengguna AOSP yang telah ditentukan sebelumnya dan menentukan jenis profil baru. Lihat bagian tentang jenis pengguna untuk mengetahui informasi selengkapnya.

Halaman ini menjelaskan panduan penerapan yang diperlukan untuk menyesuaikan jenis pengguna.

Penyesuaian

Untuk menyesuaikan jenis pengguna AOSP dan menentukan jenis profil baru, OEM harus menerapkan overlay config_user_types.xml dengan penyesuaian yang diinginkan. File config_user_types.xml berisi implementasi referensi dan daftar lengkap atribut yang dapat dikonfigurasi.

Atribut apa pun, seperti default-restrictions, yang ditentukan dalam file config_user_types.xml, akan menggantikan default AOSP. Setiap atribut yang tidak ditentukan, akan mengikuti default AOSP. Mengubah sebagian besar atribut, seperti atribut badge jenis profil, akan memengaruhi pengguna yang sudah ada dari jenis pengguna tersebut. Namun, karena default-restrictions hanya diterapkan pada saat pengguna dibuat, mengubah atribut khusus ini, jika file config_user_types.xml diubah oleh OTA, tidak akan memengaruhi pengguna yang sudah ada. Demikian pula, penentuan jumlah maksimum pengguna hanya berlaku saat membuat pengguna baru; pengguna yang ada tidak akan dihapus.

Batasan penyesuaian saat ini untuk setiap jenis pengguna adalah sebagai berikut:

  • Profil dapat disesuaikan dan ditentukan sepenuhnya. Dalam hal ini, OEM bertanggung jawab untuk melakukan modifikasi platform sesuai kebutuhan agar profil kustomnya didukung di Android, karena AOSP hanya mendukung jenis pengguna AOSP yang telah ditentukan sebelumnya.
  • Pengguna penuh tidak dapat ditentukan dan hanya atribut default-restrictions mereka yang dapat disesuaikan.
  • Pengguna sistem tidak dapat disesuaikan menggunakan mekanisme ini. Dalam hal ini, default-restrictions dapat ditetapkan menggunakan com.android.internal.R.array.config_defaultFirstUserRestrictions. Lihat config.xml untuk mengetahui informasi selengkapnya.

Mengubah jenis pengguna yang ada

Jenis pengguna yang ada dapat disesuaikan dengan mengganti atributnya seperti yang ditunjukkan dalam contoh kode berikut:

<user-types version="0">
    <full-type name="android.os.usertype.full.SECONDARY" >
        <default-restrictions no_sms="true" />
    </full-type>

    <profile-type
        name='android.os.usertype.profile.MANAGED'
        max-allowed-per-parent='2'
        icon-badge='@android:drawable/ic_corp_icon_badge_case'
        badge-plain='@android:drawable/ic_corp_badge_case'
        badge-no-background='@android:drawable/ic_corp_badge_no_background' >
        <badge-labels>
            <item res='@android:string/managed_profile_label_badge' />
            <item res='@android:string/managed_profile_label_badge_2' />
        </badge-labels>
        <badge-colors>
            <item res='@android:color/profile_badge_1' />
            <item res='@android:color/profile_badge_2' />
        </badge-colors>
        <default-restrictions no_sms="true" no_outgoing_calls="true" />
    </profile-type>
</user-types>

Dalam contoh kode ini, jenis pengguna AOSP berikut disesuaikan dengan mengubah properti yang didukung:

  • Pengguna penuh android.os.usertype.full.SECONDARY:

    • Pembatasan default no_sms ditetapkan ke benar (true) dengan menentukan default-restrictions no_sms="true".
  • Pengguna profil android.os.usertype.profile.MANAGED:

    • Dua profil diizinkan untuk setiap pengguna induk dengan menyetel max-allowed-per-parent='2'.
    • Atribut badge ditetapkan ke nilai yang dipilih menggunakan icon-badge, badge-plain, badge-no-background, badge-labels, badge-colors.
    • Pembatasan default no_sms dan no_outgoing_calls ditetapkan ke benar dengan menentukan default-restrictions no_sms="true" no_outgoing_calls="true".

Lihat UserTypeFactory.java dan UserTypeDetails.java untuk mengetahui arti dan nilai default properti ini.

Menentukan jenis profil kustom

Contoh kode berikut menunjukkan cara menentukan jenis profil kustom baru:

<user-types version="1">
    <profile-type
        name="com.example.profilename"
        max-allowed-per-parent="2" />

    <change-user-type
        from="android.os.usertype.profile.MANAGED"
        to="com.example.profilename"
        whenVersionLeq="1" />
</user-types>

Dalam contoh kode ini, jenis profil com.example.profilename ditentukan sebagai berikut:

  • max-allowed-per-parents disetel ke 2 untuk dua profil per pengguna orang tua.

  • change-user-type: mengonversi semua profil terkelola yang ada dari jenis android.os.usertype.profile.MANAGED ke jenis com.example.profilename baru saat mengupgrade perangkat dari <= 1 versi user-type melalui OTA.