O Android 11 introduziu o conceito de tipos de usuários bem definidos, representando todos os diferentes tipos de usuários permitidos pelo recurso Android Multiusuário. Com esse recurso, os OEMs podem personalizar tipos de usuários AOSP predefinidos e definir novos tipos de perfis. Consulte a seção sobre tipos de usuários para obter mais informações.
Esta página detalha as diretrizes de implementação necessárias para personalizar os tipos de usuários.
Costumização
Para customizar os tipos de usuário AOSP e definir novos tipos de perfil, o OEM deve sobrepor config_user_types.xml
com as customizações desejadas. 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 AOSP. Qualquer atributo que não seja especificado obedece ao padrão AOSP. A alteração da maioria dos atributos, como atributos de selo de um tipo de perfil, afeta usuários pré-existentes desse tipo de usuário. No entanto, como default-restrictions
são aplicadas apenas no momento em que um usuário é criado, a modificação desse atributo específico, caso o arquivo config_user_types.xml
seja alterado pelo OTA, não terá efeito em usuários pré-existentes. Da mesma forma, a especificação do número máximo de usuários só se aplica ao criar novos usuários; os usuários existentes não são removidos.
As restrições atuais de personalização 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 que seu perfil personalizado seja compatível com Android, uma vez que o AOSP oferece suporte apenas aos tipos de usuário AOSP predefinidos.
- Usuários completos não podem ser definidos e apenas seus atributos
default-restrictions
podem ser customizados. - O usuário do sistema não pode ser customizado usando este mecanismo. Nesse caso,
default-restrictions
podem ser definidas usandocom.android.internal.R.array.config_defaultFirstUserRestrictions
. Consulteconfig.xml
para obter mais informações.
Modificar tipos de usuários existentes
Os tipos de usuário existentes podem ser personalizados substituindo seus atributos, conforme mostrado no exemplo de código a seguir.
<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 AOSP são personalizados modificando as propriedades suportadas.
Usuário completo
android.os.usertype.full.SECONDARY
:- A restrição padrão de
no_sms
é definida como true especificandodefault-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 definindo
max-allowed-per-parent='2'
. - Os atributos do emblema são definidos com os valores desejados 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"
.
- Dois perfis são permitidos para cada usuário pai definindo
Consulte UserTypeFactory.java
e UserTypeDetails.java
para obter 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 perfis 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 forma:
max-allowed-per-parents
é definido como2
para dois perfis por usuário pai.change-user-type
: converte todos os perfis gerenciados existentes do tipoandroid.os.usertype.profile.MANAGED
para o novo tipocom.example.profilename
ao atualizar o dispositivo de uma versão douser-type
<= 1
por meio de OTA.