Android 11 では、明確に定義されたユーザータイプという概念が導入されました。これらは、Android マルチユーザー機能で許可されるあらゆるタイプのユーザーを表します。この機能を使用して、OEM は事前定義された AOSP ユーザータイプをカスタマイズし、新しいプロファイル タイプを定義できます。詳しくは、ユーザータイプに関するセクションをご覧ください。
このページでは、ユーザータイプのカスタマイズに必要な実装ガイドラインについて詳しく説明します。
カスタマイズ
OEM が AOSP ユーザータイプをカスタマイズして新しいプロファイル タイプを定義するには、目的とするカスタマイズで config_user_types.xml
をオーバーレイする必要があります。config_user_types.xml
ファイルには、リファレンス実装と、設定可能な属性の包括的なリストが含まれています。
config_user_types.xml
ファイルで指定されるすべての属性(default-restrictions
など)は、AOSP のデフォルトを上書きします。指定されないすべての属性は AOSP のデフォルトに従います。ほとんどの属性(プロファイル タイプのバッジ属性など)の変更は、そのユーザータイプの既存のユーザーに影響します。ただし、default-restrictions
はユーザー作成時にのみ適用されるため、OTA で config_user_types.xml
ファイルが変更された場合、この属性を変更しても既存のユーザーには影響しません。同様に、最大ユーザー数の指定は新規ユーザーの作成時にのみ適用され、既存のユーザーが削除されることはありません。
ユーザータイプごとのカスタマイズに関する現在の制限は次のとおりです。
- プロファイル全体をカスタマイズおよび定義できます。この場合、Android でカスタム プロファイルをサポートするために必要なプラットフォームの変更は、OEM が行います。AOSP は、事前定義された AOSP ユーザータイプのみをサポートします。
- フルユーザーは定義できません。カスタマイズできるのは
default-restrictions
属性のみです。 - このメカニズムを使用してシステム ユーザーをカスタマイズすることはできません。この場合は、
com.android.internal.R.array.config_defaultFirstUserRestrictions
を使用してdefault-restrictions
を設定できます。詳しくは、config.xml
をご覧ください。
既存のユーザータイプを変更する
次のコードサンプルのとおり、既存のユーザータイプをカスタマイズするには、属性をオーバーライドします。
<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>
このコードサンプルでは、サポートされているプロパティを変更することにより、以下の AOSP ユーザータイプをカスタマイズしています。
フルユーザー
android.os.usertype.full.SECONDARY
:no_sms
のデフォルトの制限は、default-restrictions no_sms="true"
を指定すると true に設定されます。
プロファイル ユーザー
android.os.usertype.profile.MANAGED
:max-allowed-per-parent='2'
を設定すると、親ユーザーごとに 2 つのプロファイルが許可されます。- バッジ属性は、
icon-badge
、badge-plain
、badge-no-background
、badge-labels
、badge-colors
を使用して選択した値に設定します。 default-restrictions no_sms="true" no_outgoing_calls="true"
を指定すると、no_sms
とno_outgoing_calls
のデフォルトの制限は true に設定されます。
これらのプロパティの意味とデフォルト値については、UserTypeFactory.java
と UserTypeDetails.java
をご覧ください。
カスタム プロファイル タイプを定義する
次のコードサンプルは、新しいカスタム プロファイル タイプを定義する方法を示しています。
<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>
このコードサンプルでは、com.example.profilename
プロファイル タイプは次のように定義されています。
max-allowed-per-parents
が2
に設定され、親ユーザーごとに 2 つのプロファイルが許可されています。change-user-type
: OTA でデバイスをuser-type
バージョン<= 1
からアップグレードする際に、タイプandroid.os.usertype.profile.MANAGED
のすべての既存の管理対象プロファイルを新しいcom.example.profilename
タイプに変換します。