W systemie Android 11 wprowadzono koncepcję dobrze zdefiniowanych typów użytkowników, reprezentujących wszystkie typy użytkowników dozwolone przez funkcję wielu użytkowników systemu Android. Dzięki tej funkcji producenci OEM mogą dostosowywać predefiniowane typy użytkowników AOSP i definiować nowe typy profili. Aby uzyskać więcej informacji, zobacz sekcję dotyczącą typów użytkowników .
Na tej stronie szczegółowo opisano wytyczne dotyczące implementacji potrzebne do dostosowania typów użytkowników.
Dostosowywanie
Aby dostosować typy użytkowników AOSP i zdefiniować nowe typy profili, producent OEM musi nałożyć na plik config_user_types.xml
żądane dostosowania. Plik config_user_types.xml
zawiera referencyjną implementację i obszerną listę konfigurowalnych atrybutów.
Każdy atrybut, taki jak default-restrictions
określony w pliku config_user_types.xml
, zastępuje wartość domyślną AOSP. Każdy atrybut, który nie jest określony, jest zgodny z wartością domyślną AOSP. Zmiana większości atrybutów, takich jak atrybuty plakietki typu profilu, wpływa na istniejących wcześniej użytkowników tego typu użytkownika. Ponieważ jednak default-restrictions
są stosowane tylko w momencie tworzenia użytkownika, modyfikacja tego konkretnego atrybutu w przypadku zmiany pliku config_user_types.xml
przez OTA nie ma wpływu na istniejących wcześniej użytkowników. Podobnie określenie maksymalnej liczby użytkowników ma zastosowanie tylko przy tworzeniu nowych użytkowników; istniejący użytkownicy nie są usuwani.
Aktualne ograniczenia dostosowywania dla każdego typu użytkownika są następujące:
- Profile można w pełni dostosowywać i definiować. W takim przypadku producent OEM jest odpowiedzialny za wprowadzenie modyfikacji platformy wymaganych do obsługi jego niestandardowego profilu w systemie Android, ponieważ AOSP obsługuje tylko wstępnie zdefiniowane typy użytkowników AOSP.
- Nie można zdefiniować pełnych użytkowników i można dostosować jedynie ich atrybut
default-restrictions
. - Za pomocą tego mechanizmu nie można personalizować użytkownika systemu. W takim przypadku
default-restrictions
można ustawić za pomocącom.android.internal.R.array.config_defaultFirstUserRestrictions
. Więcej informacji można znaleźć wconfig.xml
.
Zmodyfikuj istniejące typy użytkowników
Istniejące typy użytkowników można dostosować, zastępując ich atrybuty, jak pokazano w poniższym przykładzie kodu.
<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>
W tym przykładowym kodzie następujące typy użytkowników AOSP są dostosowywane poprzez modyfikację obsługiwanych właściwości.
Pełny użytkownik
android.os.usertype.full.SECONDARY
:- Domyślne ograniczenie
no_sms
jest ustawiane na true poprzez określeniedefault-restrictions no_sms="true"
.
- Domyślne ograniczenie
Profil użytkownika
android.os.usertype.profile.MANAGED
:- Dla każdego użytkownika nadrzędnego dozwolone są dwa profile, ustawiając
max-allowed-per-parent='2'
. - Atrybuty identyfikatora są ustawiane na żądane wartości za pomocą
icon-badge
,badge-plain
,badge-no-background
,badge-labels
,badge-colors
. - Domyślne ograniczenia
no_sms
ino_outgoing_calls
są ustawiane na true poprzez określeniedefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- Dla każdego użytkownika nadrzędnego dozwolone są dwa profile, ustawiając
Znaczenie i wartości domyślne tych właściwości można znaleźć w plikach UserTypeFactory.java
i UserTypeDetails.java
.
Zdefiniuj niestandardowe typy profili
Poniższy przykładowy kod pokazuje, jak definiowane są nowe, niestandardowe typy profili.
<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>
W tym przykładzie kodu typ profilu com.example.profilename
jest zdefiniowany w następujący sposób:
max-allowed-per-parents
jest ustawione na2
dla dwóch profili na użytkownika-rodzica.change-user-type
: konwertuje wszystkie istniejące profile zarządzane typuandroid.os.usertype.profile.MANAGED
na nowy typcom.example.profilename
podczas aktualizacji urządzenia z wersjiuser-type
<= 1
za pośrednictwem OTA.