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ários.
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 que não seja especificado obedece ao padrão do AOSP. A mudança na maioria dos atributos, como os de um selo de tipo de perfil, afeta os usuários preexistentes desse tipo.
No entanto, como os default-restrictions
só são aplicados no momento da criação de um usuário, a modificação desse atributo específico, caso o arquivo config_user_types.xml
seja alterado por OTA, não tem efeito nos usuários preexistentes. Da mesma forma, especificar o número máximo de usuários só se aplica à criação de novos usuários. Os usuários atuais não são removidos.
Estas são as restrições de personalização atuais para cada tipo de usuário:
- Os perfis podem ser totalmente personalizados e definidos. Nesse caso, o OEM é responsável por fazer as modificações necessárias na plataforma para que o perfil personalizado seja compatível com o Android, já que o AOSP só aceita os tipos de usuário predefinidos do AOSP.
- Não é possível definir usuários completos, e apenas o atributo
default-restrictions
pode ser personalizado. - 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ário atuais
É possível personalizar os tipos de usuários atuais substituindo os atributos deles, 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ários do AOSP são personalizados modificando as propriedades compatíveis:
Usuário pleno
android.os.usertype.full.SECONDARY
:- A restrição padrão de
no_sms
é definida como "true" ao especificardefault-restrictions no_sms="true"
.
- A restrição padrão de
Usuário do perfil
android.os.usertype.profile.MANAGED
:- É possível definir
max-allowed-per-parent='2'
para permitir dois perfis por usuário responsável. - Os atributos do selo são definidos com os valores escolhidos usando
icon-badge
,badge-plain
,badge-no-background
,badge-labels
,badge-colors
. - As restrições padrão de
no_sms
eno_outgoing_calls
são definidas como "true" especificandodefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- É possível definir
Consulte UserTypeFactory.java
e UserTypeDetails.java
para conferir o significado e os valores padrão dessas propriedades.
Definir tipos de perfil personalizados
O exemplo de código a seguir mostra como os 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 familiar responsável.change-user-type
: converte todos os perfis gerenciados atuais do tipoandroid.os.usertype.profile.MANAGED
para o novo tipocom.example.profilename
ao fazer upgrade do dispositivo de uma versãouser-type
do<= 1
por OTA.