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. A mudança da maioria dos atributos, como os atributos de selo de um tipo de perfil, afeta os usuários preexistentes desse tipo de usuário.
No entanto, como default-restrictions só são aplicadas quando um usuário é criado, 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, a especificação do número máximo de usuários só se aplica ao criar novos usuários. Os usuários atuais 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 modificações na plataforma conforme necessário para que o perfil personalizado seja compatível com o Android, já que o AOSP só oferece suporte aos tipos de usuário predefinidos do AOSP.
- Os usuários plenos não podem ser definidos, e apenas o atributo
default-restrictionspode ser personalizado. - O usuário do sistema não pode ser personalizado usando esse mecanismo. Nesse caso,
default-restrictionspode ser definido usandocom.android.internal.R.array.config_defaultFirstUserRestrictions. Consulteconfig.xmlpara mais informações.
Modificar tipos de usuário atuais
Os tipos de usuário atuais podem ser personalizados substituindo os atributos deles, 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 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 verdadeira especificandodefault-restrictions no_sms="true".
- A restrição padrão de
Usuário do perfil
android.os.usertype.profile.MANAGED:- Dois perfis são permitidos para cada usuário principal definindo
max-allowed-per-parent='2'. - Os atributos de selo são definidos para os valores escolhidos usando
icon-badge,badge-plain,badge-no-background,badge-labels,badge-colors. - As restrições padrão de
no_smseno_outgoing_callssão definidas como verdadeiras especificandodefault-restrictions no_sms="true" no_outgoing_calls="true".
- Dois perfis são permitidos para cada usuário principal definindo
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 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 como2para dois perfis por usuário principal.change-user-type: converte todos os perfis gerenciados atuais do tipoandroid.os.usertype.profile.MANAGEDpara o novocom.example.profilenametipo ao fazer upgrade do dispositivo de uma versãouser-typede<= 1por OTA.