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
mitcom.android.internal.R.array.config_defaultFirstUserRestrictions
festgelegt werden. Weitere Informationen finden Sie unterconfig.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, indemdefault-restrictions no_sms="true"
angegeben wird.
- Die Standardeinschränkung von
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
undbadge-colors
festgelegt. - Die Standardeinschränkungen von
no_sms
undno_outgoing_calls
werden durch Angabe vondefault-restrictions no_sms="true" no_outgoing_calls="true"
auf „true“ festgelegt.
- Durch Festlegen von
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 auf2
gesetzt.change-user-type
: konvertiert alle vorhandenen verwalteten Profile vom Typandroid.os.usertype.profile.MANAGED
in den neuencom.example.profilename
-Typ, wenn das Gerät von eineruser-type
-Version von<= 1
über OTA aktualisiert wird.