Triển khai các kiểu người dùng tuỳ chỉnh

Android 11 đã giới thiệu 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 mà tính năng Nhiều người dùng trên Android cho phép. Với tính năng này, OEM có thể tuỳ chỉnh kiểu người dùng AOSP được xác định trước và xác định các loại hồ sơ mới. Hãy xem phần các 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 để tuỳ chỉnh kiểu người dùng.

Tuỳ chỉnh

Để tuỳ chỉnh các loại người dùng AOSP và xác định các loại hồ sơ mới, OEM phải phủ config_user_types.xml bằng các tuỳ chỉnh ưu tiê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.

Mọi thuộc tính, chẳng hạn như default-restrictions, được chỉ định trong tệp config_user_types.xml, sẽ ghi đè giá trị mặc định của AOSP. Mọi thuộc tính không được chỉ định đều tuân theo chế độ mặc định của AOSP (Dự án nguồn mở Android). 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 một loại hồ sơ, sẽ ảnh hưởng đến những người dùng hiện có thuộc loại người dùng đó. Tuy nhiên, vì default-restrictions chỉ được áp dụng tại thời điểm tạo người dùng, 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 có. Tương tự, việc chỉ định số 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 sẽ không bị xoá.

Sau đây là các quy định hạn chế hiện tại về việc tuỳ chỉnh cho từng loại người dùng:

  • Bạn có thể tuỳ chỉnh và xác định hồ sơ một cách toàn diện. Trong trường hợp này, OEM chịu trách nhiệm sửa đổi nền tảng theo yêu cầu để hồ sơ tuỳ 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ể tuỳ chỉnh thuộc tính default-restrictions của họ.
  • Không thể tuỳ chỉnh người dùng hệ thống bằng cơ chế này. Trong trường hợp này, bạn có thể đặt default-restrictions bằng com.android.internal.R.array.config_defaultFirstUserRestrictions. Vui lòng 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ể tuỳ chỉnh các loại người dùng hiện có bằng cách ghi đè các thuộc tính của họ như trong mã mẫu 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ã mẫu này, các kiểu người dùng AOSP sau đây được tuỳ chỉnh bằng cách sửa đổi các thuộc tính được hỗ trợ:

  • Người dùng có toàn quyền 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".
  • Người dùng trên hồ sơ android.os.usertype.profile.MANAGED:

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

Hãy 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ơ tuỳ chỉnh

Mã mẫu sau đây cho biết cách xác định các loại hồ sơ tuỳ 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ã mẫu này, loại hồ sơ com.example.profilename được định nghĩa như sau:

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

  • 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 thành loại com.example.profilename mới khi nâng cấp thiết bị từ phiên bản user-type của <= 1 thông qua OTA.