맞춤 사용자 유형 구현

Android 11부터 Android 멀티 사용자 기능에서 허용되는 모든 유형의 사용자를 나타내는 잘 정의된 사용자 유형이라는 개념이 도입되었습니다. OEM은 이 기능을 사용하여 사전 정의된 AOSP 사용자 유형을 맞춤설정하고 새로운 프로필 유형을 정의할 수 있습니다. 자세한 내용은 사용자 유형 섹션을 참조하세요.

이 페이지에서는 사용자 유형을 맞춤설정하는 데 필요한 구현 가이드라인을 자세히 설명합니다.

맞춤설정

AOSP 사용자 유형을 맞춤설정하고 새로운 프로필 유형을 정의하려면 OEM이 config_user_types.xml을 원하는 맞춤설정으로 오버레이해야 합니다. config_user_types.xml 파일에는 구성 가능 속성의 포괄적인 목록과 참조 구현이 있습니다.

config_user_types.xml 파일에 지정된 모든 속성(예: default-restrictions)은 AOSP 기본값을 덮어씁니다. 지정되지 않은 모든 속성은 AOSP 기본값을 따릅니다. 프로필 유형의 배지 속성 등 대부분의 속성은 변경하면 이 사용자 유형의 기존 사용자에게 영향을 미칩니다. 단, default-restrictions는 사용자가 생성된 시점에만 적용되므로, OTA가 config_user_types.xml 파일을 변경한 경우 이 속성을 수정해도 기존 사용자에게 영향을 미치지 않습니다. 마찬가지로, 최대 사용자 수를 지정하는 것은 신규 사용자 생성 시에만 적용되며, 기존 사용자는 삭제되지 않습니다.

현재 각 사용자 유형에 적용되는 맞춤설정 제한사항은 다음과 같습니다.

  • 프로필은 완전히 맞춤설정 및 정의할 수 있습니다. 이 경우 AOSP는 사전 정의된 AOSP 사용자 유형만 지원하므로 OEM은 Android에서 맞춤 프로필이 지원되도록 하는 데 필요한 플랫폼 수정을 적용해야 합니다.
  • 전체 사용자는 정의할 수 없으며 default-restrictions 속성만 맞춤설정할 수 있습니다.
  • 시스템 사용자는 이 메커니즘을 사용하여 맞춤설정할 수 없습니다. 이 경우 default-restrictionscom.android.internal.R.array.config_defaultFirstUserRestrictions를 사용하여 설정할 수 있습니다. 자세한 내용은 config.xml을 참고하세요.

기존 사용자 유형 수정

기존 사용자 유형은 다음 코드 샘플과 같이 속성을 재정의하여 맞춤설정할 수 있습니다.

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

이 코드 샘플에서는 다음과 같은 AOSP 사용자 유형이 지원되는 속성을 수정하여 맞춤설정되었습니다.

  • 전체 사용자 android.os.usertype.full.SECONDARY:

    • no_sms의 기본 제한사항은 default-restrictions no_sms="true"를 지정하여 true로 설정합니다.
  • 프로필 사용자 android.os.usertype.profile.MANAGED:

    • max-allowed-per-parent='2'를 설정하여 상위 사용자당 두 개의 프로필을 허용합니다.
    • 배지 속성은 icon-badge, badge-plain, badge-no-background, badge-labels, badge-colors를 사용하여 원하는 값으로 설정합니다.
    • no_smsno_outgoing_calls의 기본 제한사항은 default-restrictions no_sms="true" no_outgoing_calls="true"를 지정하여 true로 설정합니다.

이러한 속성의 의미와 기본값은 UserTypeFactory.javaUserTypeDetails.java를 참고하세요.

맞춤 프로필 유형 정의

다음 코드 샘플에서는 새로운 맞춤 프로필 유형이 정의되는 방법을 보여줍니다.

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

이 코드 샘플에서 com.example.profilename 프로필 유형은 다음과 같이 정의됩니다.

  • max-allowed-per-parents2로 설정하여 상위 사용자당 두 개의 프로필을 허용합니다.

  • change-user-type: OTA를 통해 <= 1user-type 버전에서 기기를 업그레이드할 때 유형이 android.os.usertype.profile.MANAGED모든 기존 관리형 프로필을 새로운 com.example.profilename 유형으로 변환합니다.