W Androidzie 11 wprowadzono koncepcję dobrze zdefiniowanych typów użytkowników, które reprezentują wszystkie różne typy użytkowników dozwolone przez funkcję wielu użytkowników w Androidzie. Dzięki tej funkcji producenci OEM mogą dostosowywać predefiniowane typy użytkowników AOSP i definiować nowe typy profili. Więcej informacji znajdziesz w sekcji Typy użytkowników.
Na tej stronie znajdziesz szczegółowe wytyczne dotyczące implementacji, które są 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ć config_user_types.xml z preferowanymi dostosowaniami. Plik config_user_types.xml zawiera implementację referencyjną i pełną listę atrybutów, które można skonfigurować.
Każdy atrybut, np. default-restrictions, który jest określony w pliku config_user_types.xml, zastępuje domyślne ustawienie AOSP. Każdy atrybut, który nie jest określony, jest zgodny z domyślnym ustawieniem AOSP. Zmiana większości atrybutów, np. atrybutów plakietki typu profilu, wpływa na użytkowników, którzy już korzystają z tego typu.
Ponieważ jednak default-restrictions są stosowane tylko w momencie tworzenia użytkownika, zmiana tego konkretnego atrybutu w przypadku zmiany pliku config_user_types.xml przez OTA nie ma wpływu na istniejących użytkowników. Podobnie określenie maksymalnej liczby użytkowników ma zastosowanie tylko podczas tworzenia nowych użytkowników. Istniejący użytkownicy nie są usuwani.
Obecne ograniczenia dotyczące dostosowywania dla poszczególnych typów użytkowników są następujące:
- Profile można w pełni dostosowywać i definiować. W takim przypadku producent OEM jest odpowiedzialny za wprowadzenie zmian w platformie wymaganych do obsługi niestandardowego profilu w Androidzie, ponieważ AOSP obsługuje tylko predefiniowane typy użytkowników AOSP.
- Nie można definiować pełnych użytkowników, a dostosowywać można tylko ich atrybut
default-restrictions. - Nie można dostosować użytkownika systemu za pomocą tego mechanizmu. W tym przypadku wartość
default-restrictionsmożna ustawić za pomocą parametrucom.android.internal.R.array.config_defaultFirstUserRestrictions. Więcej informacji znajdziesz w sekcjiconfig.xml.
Modyfikowanie istniejących typów użytkowników
Istniejące typy użytkowników można dostosowywać, zastępując ich atrybuty, jak pokazano w tym 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 dostosowano te typy użytkowników AOSP, modyfikując obsługiwane właściwości:
Użytkownik z pełnym dostępem
android.os.usertype.full.SECONDARY:- Domyślne ograniczenie
no_smsjest ustawione na wartość „true” (prawda) przez określeniedefault-restrictions no_sms="true".
- Domyślne ograniczenie
Użytkownik profilu
android.os.usertype.profile.MANAGED:- Każdy użytkownik będący rodzicem może mieć 2 profile, jeśli ustawi
max-allowed-per-parent='2'. - Atrybuty plakietki są ustawione na wybrane wartości za pomocą
icon-badge,badge-plain,badge-no-background,badge-labels,badge-colors. - Domyślne ograniczenia
no_smsino_outgoing_callssą ustawione na wartość true przez określeniedefault-restrictions no_sms="true" no_outgoing_calls="true".
- Każdy użytkownik będący rodzicem może mieć 2 profile, jeśli ustawi
Znaczenie i wartości domyślne tych właściwości znajdziesz w sekcjach UserTypeFactory.java i UserTypeDetails.java.
Definiowanie niestandardowych typów profili
Poniższy przykładowy kod pokazuje, jak definiuje się 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ładowym kodzie com.example.profilename typ profilu jest zdefiniowany w ten sposób:
max-allowed-per-parentsjest ustawiona na2w przypadku 2 profili na użytkownika będącego rodzicem.change-user-type: podczas uaktualniania urządzenia z wersjiuser-typesystemu<= 1za pomocą aktualizacji OTA przekształca wszystkie istniejące zarządzane profile typuandroid.os.usertype.profile.MANAGEDw nowy typcom.example.profilename.