W Androidzie 11 wprowadziliśmy koncepcję dobrze zdefiniowanych typów użytkowników, reprezentujących wszystkie typy użytkowników dozwolone w ramach funkcji Androida dla wielu użytkowników. Dzięki tej funkcji OEM-y 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ć profilconfig_user_types.xml
na preferowane ustawienia. Plik config_user_types.xml
zawiera implementację referencyjną i obszerną listę atrybutów, które można konfigurować.
Każdy atrybut, np. default-restrictions
, określony w pliku config_user_types.xml
, zastępuje domyślne ustawienie AOSP. Każdy atrybut, który nie jest określony, podlega ustawieniom 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 atrybuty default-restrictions
są stosowane tylko w momencie tworzenia użytkownika, zmiana tego atrybutu w przypadku, gdy plik config_user_types.xml
zostanie zmodyfikowany przez OTA, nie będzie miała wpływu na już istniejących użytkowników. Podobnie określenie maksymalnej liczby użytkowników ma zastosowanie tylko podczas tworzenia nowych użytkowników; dotychczasowi 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 dostosować i zdefiniować. 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, a jedynie 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
. Więcej informacji znajdziesz na stronieconfig.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ładzie kodu dostosowujemy 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 kategorii
no_sms
ma wartość Prawda. Aby to zrobić, należy określić parametrdefault-restrictions no_sms="true"
.
- Domyślne ograniczenie kategorii
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ą 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” (prawda) przez podanie wartościdefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- Dla każdego użytkownika nadrzędnego można ustawić 2 profile. Wystarczy, że ustawisz
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:
Wartość
max-allowed-per-parents
jest ustawiona na2
dla 2 profili na rodzica.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
.