Implementieren benutzerdefinierter Benutzertypen

Android 11 hat das Konzept klar definierter Benutzertypen eingeführt, die alle verschiedenen Benutzertypen repräsentieren, die die Android-Mehrbenutzerfunktion zulässt. Mit dieser Funktion können OEMs vordefinierte AOSP-Benutzertypen anpassen und neue Profiltypen definieren. Weitere Informationen finden Sie im Abschnitt über Benutzertypen .

Auf dieser Seite werden die Implementierungsrichtlinien beschrieben, die zum Anpassen von Benutzertypen erforderlich sind.

Anpassung

Um AOSP-Benutzertypen anzupassen und neue Profiltypen zu definieren, muss der OEM config_user_types.xml mit den gewünschten Anpassungen überlagern. Die Datei config_user_types.xml enthält eine Referenzimplementierung und eine umfassende Liste konfigurierbarer Attribute.

Jedes Attribut, z. B. default-restrictions , das in der Datei config_user_types.xml angegeben ist, überschreibt die AOSP-Standardeinstellung. Jedes Attribut, das nicht angegeben ist, folgt der AOSP-Standardeinstellung. Das Ändern der meisten Attribute, beispielsweise der Badge-Attribute eines Profiltyps, wirkt sich auf bereits vorhandene Benutzer dieses Benutzertyps aus. Da jedoch default-restrictions nur zum Zeitpunkt der Erstellung eines Benutzers gelten, hat die Änderung dieses bestimmten Attributs, falls die Datei config_user_types.xml durch OTA geändert wird, keine Auswirkungen auf bereits vorhandene Benutzer. Ebenso gilt die Angabe der maximalen Benutzeranzahl nur beim Anlegen neuer Benutzer; Vorhandene Benutzer werden nicht entfernt.

Die aktuellen Anpassungseinschränkungen für jeden Benutzertyp lauten wie folgt:

  • Profile können vollständig angepasst und definiert werden. In diesem Fall ist der OEM dafür verantwortlich, bei Bedarf Plattformänderungen vorzunehmen, damit sein benutzerdefiniertes Profil in Android unterstützt wird, da AOSP nur die vordefinierten AOSP-Benutzertypen unterstützt.
  • Vollständige Benutzer können nicht definiert werden und nur ihr Attribut default-restrictions kann angepasst werden.
  • Der Systembenutzer kann mit diesem Mechanismus nicht angepasst werden. In diesem Fall können default-restrictions mithilfe von com.android.internal.R.array.config_defaultFirstUserRestrictions festgelegt werden. Weitere Informationen finden Sie unter config.xml .

Ändern Sie vorhandene Benutzertypen

Vorhandene Benutzertypen können durch Überschreiben ihrer Attribute angepasst werden, wie im folgenden Codebeispiel gezeigt.

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

In diesem Codebeispiel werden die folgenden AOSP-Benutzertypen durch Ändern der unterstützten Eigenschaften angepasst.

  • Vollständiger Benutzer android.os.usertype.full.SECONDARY :

    • Die Standardeinschränkung von no_sms wird durch Angabe von default-restrictions no_sms="true" auf true gesetzt.
  • Profilbenutzer android.os.usertype.profile.MANAGED :

    • Für jeden übergeordneten Benutzer sind zwei Profile zulässig, indem max-allowed-per-parent='2' festgelegt wird.
    • Badge-Attribute werden mithilfe von icon-badge , badge-plain , badge-no-background , badge-labels und badge-colors auf die gewünschten Werte gesetzt.
    • Die Standardeinschränkungen von no_sms und no_outgoing_calls werden durch Angabe von default-restrictions no_sms="true" no_outgoing_calls="true" auf true gesetzt.

Die Bedeutung und Standardwerte dieser Eigenschaften finden Sie in UserTypeFactory.java und UserTypeDetails.java .

Definieren Sie benutzerdefinierte Profiltypen

Das folgende Codebeispiel zeigt, wie neue, benutzerdefinierte Profiltypen definiert werden.

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

In diesem Codebeispiel ist der Profiltyp com.example.profilename wie folgt definiert:

  • max-allowed-per-parents ist für zwei Profile pro übergeordnetem Benutzer auf 2 festgelegt.

  • change-user-type : Konvertiert alle vorhandenen verwalteten Profile des Typs android.os.usertype.profile.MANAGED in den neuen Typ com.example.profilename , wenn das Gerät von einer user-type <= 1 über OTA aktualisiert wird.