O Android 11 apresentou o conceito de tipos de usuário bem definidos, representando todos os diferentes tipos permitidos pelo recurso multiusuário do Android. Com esse recurso, os OEMs podem personalizar os tipos de usuário predefinidos do AOSP e definir novos tipos de perfil. Consulte a seção sobre tipos de usuário para mais informações.
Esta página detalha as diretrizes de implementação necessárias para personalizar os tipos de usuário.
Personalização
Para personalizar os tipos de usuário do AOSP e definir novos tipos de perfil, o OEM
precisa sobrepor
config_user_types.xml
com as personalizações preferidas. O arquivo config_user_types.xml
contém uma implementação de referência e uma lista abrangente de atributos
configuráveis.
Qualquer atributo, como default-restrictions
, especificado no
arquivo config_user_types.xml
, substitui o padrão do AOSP. Qualquer atributo
não especificado, obedece ao padrão do AOSP. Alterar a maioria dos atributos, como os
do selo de um tipo de perfil, afeta os usuários desse tipo que já existem.
No entanto, como os default-restrictions
só são aplicados quando um usuário é
criado, modificando esse atributo, caso o
O arquivo config_user_types.xml
é alterado por OTA e não afeta os arquivos
usuários. Da mesma forma, especificar o número máximo de usuários só se aplica quando
criar novos usuários; os usuários existentes não são removidos.
As restrições de personalização atuais para cada tipo de usuário são as seguintes:
- Os perfis podem ser totalmente personalizados e definidos. Nesse caso, o OEM é responsável por fazer as modificações na plataforma conforme necessário para os sistemas suporte no Android, uma vez que o AOSP só oferece suporte ao Tipos de usuário do AOSP.
- Não é possível definir usuários completos, e apenas o atributo
default-restrictions
deles podem ser personalizados. - Não é possível personalizar o usuário do sistema usando esse mecanismo. Nesse caso,
default-restrictions
pode ser definido usandocom.android.internal.R.array.config_defaultFirstUserRestrictions
. Consulteconfig.xml
para mais informações.
Modificar tipos de usuários
Os tipos de usuário atuais podem ser personalizados substituindo os atributos, conforme mostrado neste exemplo de código:
<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>
Neste exemplo de código, os seguintes tipos de usuário do AOSP são personalizados modificando as propriedades com suporte:
Usuário pleno
android.os.usertype.full.SECONDARY
:- A restrição padrão de
no_sms
é definida como verdadeira ao especificardefault-restrictions no_sms="true"
.
- A restrição padrão de
Perfil do usuário
android.os.usertype.profile.MANAGED
:- Dois perfis são permitidos para cada usuário pai por configuração
max-allowed-per-parent='2'
: - Os atributos do selo são definidos como valores escolhidos usando
icon-badge
.badge-plain
,badge-no-background
,badge-labels
ebadge-colors
. - As restrições padrão de
no_sms
eno_outgoing_calls
estão definidas como verdadeiro especificandodefault-restrictions no_sms="true" no_outgoing_calls="true"
- Dois perfis são permitidos para cada usuário pai por configuração
Consulte UserTypeFactory.java
e UserTypeDetails.java
para saber o significado e os valores padrão dessas propriedades.
Definir tipos de perfil personalizados
O exemplo de código a seguir mostra como novos tipos de perfil personalizados são definidos:
<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>
Neste exemplo de código, o tipo de perfil com.example.profilename
é
definido da seguinte maneira:
max-allowed-per-parents
é definido como2
para dois perfis por usuário pai.change-user-type
: converte todos os perfis gerenciados do tipoandroid.os.usertype.profile.MANAGED
para o novo tipocom.example.profilename
ao fazer upgrade do dispositivo de uma versãouser-type
de<= 1
por OTA.