Triển khai các loại người dùng tùy chỉnh

Android 11 đã đưa ra khái niệm về các loại người dùng được xác định rõ ràng, đại diện cho tất cả các loại người dùng khác nhau được tính năng Nhiều người dùng của Android cho phép. Với tính năng này, OEM có thể tùy chỉnh các loại người dùng AOSP được xác định trước và xác định các loại hồ sơ mới. Xem phần về loại người dùng để biết thêm thông tin.

Trang này trình bày chi tiết các nguyên tắc triển khai cần thiết để tùy chỉnh loại người dùng.

Tùy chỉnh

Để tùy chỉnh loại người dùng AOSP và xác định loại hồ sơ mới, OEM phải phủ config_user_types.xml với các tùy chỉnh mong muốn. Tệp config_user_types.xml chứa cách triển khai tham chiếu và danh sách đầy đủ các thuộc tính có thể định cấu hình.

Bất kỳ thuộc tính nào, chẳng hạn như default-restrictions , được chỉ định trong tệp config_user_types.xml , sẽ ghi đè mặc định AOSP. Bất kỳ thuộc tính nào không được chỉ định sẽ tuân theo mặc định AOSP. Việc thay đổi hầu hết các thuộc tính, chẳng hạn như thuộc tính huy hiệu của loại hồ sơ, sẽ ảnh hưởng đến những người dùng hiện có của loại người dùng đó. Tuy nhiên, vì default-restrictions chỉ được áp dụng tại thời điểm người dùng được tạo nên việc sửa đổi thuộc tính cụ thể này, trong trường hợp tệp config_user_types.xml bị OTA thay đổi, sẽ không ảnh hưởng đến người dùng hiện tại. Tương tự, việc chỉ định số lượng người dùng tối đa chỉ áp dụng khi tạo người dùng mới; người dùng hiện tại không bị xóa.

Các hạn chế tùy chỉnh hiện tại cho từng loại người dùng như sau:

  • Hồ sơ có thể được tùy chỉnh và xác định đầy đủ. Trong trường hợp này, OEM chịu trách nhiệm thực hiện các sửa đổi nền tảng theo yêu cầu để hồ sơ tùy chỉnh của họ được hỗ trợ trong Android, vì AOSP chỉ hỗ trợ các loại người dùng AOSP được xác định trước.
  • Không thể xác định người dùng đầy đủ và chỉ có thể tùy chỉnh thuộc tính default-restrictions của họ.
  • Người dùng hệ thống không thể được tùy chỉnh bằng cơ chế này. Trong trường hợp này, default-restrictions có thể được đặt bằng cách sử dụng com.android.internal.R.array.config_defaultFirstUserRestrictions . Xem config.xml để biết thêm thông tin.

Sửa đổi loại người dùng hiện có

Bạn có thể tùy chỉnh các loại người dùng hiện tại bằng cách ghi đè các thuộc tính của họ như minh họa trong mẫu mã sau.

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

Trong mẫu mã này, các loại người dùng AOSP sau được tùy chỉnh bằng cách sửa đổi các thuộc tính được hỗ trợ.

  • Người dùng đầy đủ android.os.usertype.full.SECONDARY :

    • Giới hạn mặc định của no_sms được đặt thành true bằng cách chỉ định default-restrictions no_sms="true" .
  • Hồ sơ người dùng android.os.usertype.profile.MANAGED :

    • Hai hồ sơ được phép cho mỗi người dùng gốc bằng cách đặt max-allowed-per-parent='2' .
    • Các thuộc tính huy hiệu được đặt thành các giá trị mong muốn bằng cách sử dụng icon-badge , badge-plain , badge-no-background , badge-labels , badge-colors .
    • Các hạn chế mặc định của no_smsno_outgoing_calls được đặt thành true bằng cách chỉ định default-restrictions no_sms="true" no_outgoing_calls="true" .

Tham khảo UserTypeFactory.javaUserTypeDetails.java để biết ý nghĩa và giá trị mặc định của các thuộc tính này.

Xác định loại hồ sơ tùy chỉnh

Mẫu mã sau đây cho biết cách xác định các loại hồ sơ tùy chỉnh, mới.

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

Trong mẫu mã này, loại hồ sơ com.example.profilename được xác định như sau:

  • max-allowed-per-parents được đặt thành 2 cho hai hồ sơ cho mỗi người dùng gốc.

  • change-user-type : chuyển đổi tất cả hồ sơ được quản lý hiện có thuộc loại android.os.usertype.profile.MANAGED sang loại com.example.profilename mới khi nâng cấp thiết bị từ phiên bản user-type <= 1 thông qua OTA.