W Androidzie 11 wprowadziliśmy koncepcję dobrze zdefiniowanych typów użytkowników, które reprezentują różne grupy użytkowników dozwolone w ramach funkcji Androida dla wielu użytkowników. Dzięki tej funkcji OEM może dostosowywać wstępnie zdefiniowane typy użytkowników AOSP i definiować nowe. Więcej informacji znajdziesz w sekcji poświęconej typom 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.
Personalizacja
Aby dostosować typy użytkowników AOSP i zdefiniować nowe typy profili, producent OEM musi nałożyć config_user_types.xml
odpowiednie zmiany. Plik config_user_types.xml
zawiera implementację referencyjną i pełną listę atrybutów, które można skonfigurować.
Każdy atrybut, taki jak default-restrictions
, który jest określony w pliku config_user_types.xml
, zastępuje domyślną wartość AOSP. Każdy atrybut, który nie został określony, jest zgodny z ustawieniem domyślnym AOSP. Zmiana większości atrybutów, np. atrybutów plakietki typu profilu, wpływa na istniejących użytkowników tego typu.
Ponieważ jednak default-restrictions
są stosowane tylko podczas tworzenia użytkownika, zmiana tego konkretnego atrybutu nie wpłynie na zmianę pliku config_user_types.xml
przez OTA nie będzie miała 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 dostosowywania poszczególnych typów użytkowników są następujące:
- Profile można w pełni dostosowywać i definiować. W takim przypadku to producent OEM odpowiada za wprowadzenie zmian w platformie, które są wymagane do obsługi 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 i można dostosować tylko ich atrybut
default-restrictions
. - Za pomocą tego mechanizmu nie można dostosować użytkownika systemowego. W tym przypadku
default-restrictions
można ustawić za pomocą właściwościcom.android.internal.R.array.config_defaultFirstUserRestrictions
. Więcej informacji znajdziesz na stronieconfig.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 poniższym 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 modyfikację obsługiwanych właściwości.
Użytkownik z pełnym dostępem (
android.os.usertype.full.SECONDARY
):- Domyślne ograniczenie funkcji
no_sms
zostaje ustawione na Prawda przez określeniedefault-restrictions no_sms="true"
.
- Domyślne ograniczenie funkcji
Użytkownik profilu
android.os.usertype.profile.MANAGED
:- Dla każdego użytkownika nadrzędnego można ustawić 2 profile. Wystarczy, że ustawisz
max-allowed-per-parent='2'
. - Atrybuty plakietki są ustawiane na odpowiednie wartości za pomocą tych elementów:
icon-badge
,badge-plain
,badge-no-background
,badge-labels
,badge-colors
. - Aby ustawić domyślne ograniczenia
no_sms
ino_outgoing_calls
, należy określić wartośćdefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- Dla każdego użytkownika nadrzędnego można ustawić 2 profile. Wystarczy, że ustawisz
Znaczenie i domyślne wartości tych właściwości znajdziesz w artykułach UserTypeFactory.java
i UserTypeDetails.java
.
Zdefiniuj niestandardowe typy profili
Poniższa próbka kodu 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 typ profilu com.example.profilename
jest zdefiniowany w taki sposób:
max-allowed-per-parents
ma wartość2
w przypadku 2 profili na użytkownika nadrzędnego.change-user-type
: konwertuje wszystkie istniejące profile zarządzane typuandroid.os.usertype.profile.MANAGED
na nowy typcom.example.profilename
podczas uaktualniania urządzenia z wersji<= 1
douser-type
za pomocą aktualizacji OTA.