Benutzerdefinierte Nutzertypen implementieren

Mit Android 11 wurde das Konzept klar definierter Nutzertypen eingeführt, das die verschiedenen Nutzertypen darstellt, die von der Android-Funktion für mehrere Nutzer zugelassen werden. Mit dieser Funktion können OEMs vordefinierte AOSP-Nutzertypen anpassen und neue Profiltypen definieren. Weitere Informationen finden Sie im Abschnitt zu Nutzertypen.

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

Anpassen

Um AOSP-Nutzertypen 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 wie default-restrictions, das in der Datei config_user_types.xml angegeben ist, überschreibt den AOSP-Standardwert. Alle Attribute, die nicht angegeben sind, entsprechen dem AOSP-Standardwert. Das Ändern der meisten Attribute, z. B. der Logoattribute eines Profiltyps, wirkt sich auf bereits vorhandene Nutzer dieses Nutzertyps aus. Da default-restrictions jedoch nur bei der Erstellung eines Nutzers angewendet werden, hat das Ändern dieses bestimmten Attributs, wenn die Datei config_user_types.xml von OTA geändert wird, keine Auswirkungen auf bereits vorhandene Nutzer. Ebenso gilt die Angabe der maximalen Anzahl von Nutzern nur beim Erstellen neuer Nutzer. Vorhandene Nutzer werden nicht entfernt.

Aktuelle Einschränkungen für die Personalisierung der einzelnen Nutzertypen:

  • Profile können vollständig angepasst und definiert werden. In diesem Fall ist der OEM für die Plattformänderungen verantwortlich, die erforderlich sind, damit sein benutzerdefiniertes Profil in Android unterstützt wird, da AOSP nur die vordefinierten AOSP-Nutzertypen unterstützt.
  • Nutzer mit uneingeschränkten Berechtigungen können nicht definiert und nur das Attribut default-restrictions angepasst werden.
  • Der Systemnutzer kann mit diesem Mechanismus nicht angepasst werden. In diesem Fall kann default-restrictions mit com.android.internal.R.array.config_defaultFirstUserRestrictions festgelegt werden. Weitere Informationen finden Sie unter config.xml.

Vorhandene Nutzertypen ändern

Vorhandene Nutzertypen 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-Nutzertypen durch Ändern der unterstützten Attribute angepasst.

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

    • Die Standardeinschränkung von no_sms ist auf „true“ festgelegt, indem default-restrictions no_sms="true" angegeben wird.
  • Profilnutzer android.os.usertype.profile.MANAGED:

    • Durch Festlegen von max-allowed-per-parent='2' sind für jeden übergeordneten Nutzer zwei Profile zulässig.
    • Für Badge-Attribute werden die gewünschten Werte mit icon-badge, badge-plain, badge-no-background, badge-labels und badge-colors festgelegt.
    • 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“ festgelegt.

Informationen zur Bedeutung und Standardwerte dieser Attribute finden Sie unter UserTypeFactory.java und UserTypeDetails.java.

Benutzerdefinierte Profiltypen definieren

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 so definiert:

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

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