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