Android 11 wprowadził pojęcie dobrze zdefiniowanych typów użytkowników, które reprezentują wszystkie typy użytkowników dozwolone przez funkcję Androida dotyczącą wielu użytkowników. Dzięki tej funkcji producenci OEM mogą dostosowywać wstępnie zdefiniowane 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 wskazówki dotyczące implementacji, które są niezbędne do dostosowywania 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
na preferowane ustawienia. Plik config_user_types.xml
zawiera implementację referencyjną i pełną listę możliwych do skonfigurowania
.
Każdy atrybut, taki jak default-restrictions
, który jest określony w atrybucie
config_user_types.xml
, zastępuje wartość domyślną AOSP. Każdy atrybut, który
nie określono, jest zgodne z domyślnym AOSP. Zmiana większości atrybutów, np. atrybutów plakietki typu profilu, ma wpływ na użytkowników danego typu, którzy już korzystają z usługi.
Ponieważ jednak reguły default-restrictions
są stosowane tylko wtedy, gdy użytkownik jest
przez modyfikację tego konkretnego atrybutu, w przypadku gdy
Plik config_user_types.xml
został zmieniony przez OTA i nie ma wpływu na istniejący już plik
użytkowników. Analogicznie określenie maksymalnej liczby użytkowników ma zastosowanie tylko wtedy,
tworzenie nowych użytkowników; istniejący użytkownicy nie zostaną usunięci.
Obecne ograniczenia dostosowywania 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, które umożliwią obsługę niestandardowego profilu na Androidzie, ponieważ AOSP obsługuje tylko wstępnie zdefiniowane typy użytkowników AOSP.
- Nie można zdefiniować pełnych użytkowników oraz ich atrybut
default-restrictions
można dostosować. - Za pomocą tego mechanizmu nie można dostosować użytkownika systemu. W takim przypadku możesz ustawić parametr
default-restrictions
za pomocą parametrucom.android.internal.R.array.config_defaultFirstUserRestrictions
. Zobaczconfig.xml
.
Modyfikowanie istniejących typów użytkowników
Istniejące typy użytkowników można dostosować, zastępując ich atrybuty jak pokazano w tym przykładowym kodzie:
<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ładzie kodu następujące typy użytkowników AOSP są dostosowywane przez wprowadzenie obsługiwane właściwości:
Użytkownik z pełnym dostępem
android.os.usertype.full.SECONDARY
:- Domyślne ograniczenie zasady
no_sms
zostaje ustawione na Prawda przez określeniedefault-restrictions no_sms="true"
- Domyślne ograniczenie zasady
Użytkownik profilu
android.os.usertype.profile.MANAGED
:- Każdy rodzic może mieć 2 profile, jeśli włączy ustawienie
max-allowed-per-parent='2'
. - Atrybuty plakietki są ustawione na wybrane wartości za pomocą tych atrybutów:
icon-badge
,badge-plain
,badge-no-background
,badge-labels
,badge-colors
. - Domyślne ograniczenia
no_sms
ino_outgoing_calls
są ustawione na true przez określeniedefault-restrictions no_sms="true" no_outgoing_calls="true"
- Każdy rodzic może mieć 2 profile, jeśli włączy ustawienie
Aby poznać znaczenie i wartości domyślne tych właściwości, zobacz 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ładzie kodu typ profilu com.example.profilename
jest zdefiniowany w ten sposób:
max-allowed-per-parents
ma wartość2
w przypadku 2 profili na użytkownika nadrzędnego.change-user-type
: podczas aktualizacji urządzenia z wersjiuser-type
systemu<= 1
za pomocą OTA wszystkie istniejące profile zarządzane typuandroid.os.usertype.profile.MANAGED
zostaną przekonwertowane na nowy typcom.example.profilename
.