Android では、各ユーザーにそれぞれ異なるアカウントとアプリケーション データを提供して、1 台のデバイスで複数のユーザーをサポートします。たとえば、保護者がお子様に家族のタブレットを使用することを許可したり、家族が自動車を共有したり、緊急対応チームがモバイル デバイスをオンコール時に共有したりできます。
用語
Android では、Android のユーザーとアカウントを説明する際に、次の用語を使用します。
全般
Android デバイスの管理に関しては、次の一般的な用語が使用されます。
- ユーザー: 各ユーザーは、それぞれ異なる人物によって使用されることが想定されています。ユーザーごとに個別のアプリケーション データ、固有の設定、ユーザー インターフェースがあり、これらはユーザー間で明示的に切り替えられます。あるユーザーがアクティブなときに、別のユーザーがバックグラウンドで動作していることもあります。システムは、リソースを節約するために、必要に応じてユーザーをシャットダウンします。セカンダリ ユーザーは、ユーザー インターフェースから直接、またはデバイス管理アプリケーションから作成できます。
- アカウント: アカウントはユーザーに含まれますが、ユーザーによって定義されることはありません。同様に、ユーザーがアカウントによって定義されたり、特定のアカウントにリンクされたりすることはありません。ユーザーとプロファイルには固有のアカウントが含まれますが、アカウントがなくてもそのユーザーとプロファイルは機能します。アカウントのリストはユーザーによって異なります。詳細については、Account クラスの定義を参照してください。
- プロファイル: プロファイルのアプリデータはそれぞれ異なりますが、システム全体に関する一部の設定(Wi-Fi や Bluetooth など)は共有されます。プロファイルは、ユーザーのサブセットであり、ユーザーに関連付けられます。ユーザーは複数のプロファイルを持つことができます。プロファイルは、デバイス管理アプリケーションで作成されます。プロファイルは、そのプロファイルを作成したユーザーによって親ユーザーへの関連付けが定義され、その関連付けは変更できません。また、そのプロファイルを作成したユーザーの存続期間を超えて存続することはできません。
- アプリ: アプリケーションのデータは、関連付けられた各ユーザー内に存在します。アプリデータは、同じユーザー内の他のアプリからサンドボックス化されています。同じユーザー内の複数のアプリは、IPC 経由で相互にやり取りできます。詳細については、エンタープライズ向け Android をご覧ください。
ユーザーのカテゴリ
Android デバイスの管理では、次のユーザー カテゴリを使用します。
- システム ユーザー: デバイスに追加された最初のユーザー。システム ユーザーは出荷時の設定以外では削除できず、他のユーザーがフォアグラウンドで動作しているときも常に動作し続けます。また、このユーザーには特別な権限と設定があり、それらはシステム ユーザーのみが設定できます。
- セカンダリ ユーザー: デバイスに追加されたシステム ユーザー以外のユーザー。セカンダリ ユーザーは、自分自身と管理者ユーザーのいずれかが削除できます。デバイス上の他のユーザーに影響を与えることはできません。セカンダリ ユーザーはバックグラウンドで動作でき、その間もネットワーク接続を継続できます。
- ゲストユーザー: 一時的なセカンダリ ユーザー。ゲストユーザーには、ゲストユーザーを削除するための明示的なオプションがあり、有用性がなくなったゲストユーザーをすばやく削除できます。ゲストユーザーは同時に 1 つのみ設定できます。
- 管理者ユーザー: 他のユーザーを作成、削除し、いくつかの一般的なマルチユーザー設定を管理する権限を持つユーザー。デフォルトでは、システム ユーザーのみが管理者ユーザーです。
プロファイルのカテゴリ
Android デバイスの管理では、次のプロファイル カテゴリを使用します。
- 管理対象プロファイル: アプリによって作成され、仕事用のデータとアプリが含まれます。管理対象プロファイルは、プロファイル オーナー(企業プロファイルを作成したアプリ)によってのみ管理されます。ランチャー、通知、最近のタスクは、親ユーザーと企業プロファイルによって共有されます。
- 制限付きプロファイル: 親ユーザーに基づくアカウントを使用します。親ユーザーは、制限付きプロファイルで使用可能なアプリを管理できます。タブレット デバイスとテレビデバイスでのみ使用できます。
ユーザータイプ
Android 11 では、上記のユーザーとプロファイルの分類が、明確に定義されたユーザータイプとして規定されています。ユーザータイプは、Android のマルチユーザー機能で許可されるすべてのタイプのユーザーとプロファイルを表します。
事前定義済みの AOSP ユーザータイプは frameworks/base/core/java/android/os/UserManager.java
で定義されており、現在のところ以下が含まれています。
android.os.usertype.full.SYSTEM
android.os.usertype.full.SECONDARY
android.os.usertype.full.GUEST
android.os.usertype.full.DEMO
android.os.usertype.full.RESTRICTED
android.os.usertype.profile.MANAGED
android.os.usertype.system.HEADLESS
OEM は、frameworks/base/core/res/res/xml/config_user_types.xml
ファイルをオーバーレイすることにより、上記のユーザータイプを構成できます。これにより、デフォルトの制限、アイコン、バッジ、最大許容ユーザー数など、各ユーザータイプのデフォルトの構成を簡単に変更できます。
OEM は、構成可能な AOSP ユーザータイプに加えて、frameworks/base/core/res/res/xml/config_user_types.xml
ファイルで新しいプロファイル タイプを定義できます。これにより、OEM は必要に応じて独自の非管理対象プロファイル タイプを導入できます。ただし、変更をサポートするために必要なプラットフォーム変更を行う責任は OEM にあります。たとえば、管理対象プロファイルをチェックするコードを変更し、必要に応じて新しいプロファイル タイプを処理できるようにします。
マルチユーザーを有効にする
Android 5.0 以降、マルチユーザー機能はデフォルトで無効になっています。この機能を有効にするには、frameworks/base/core/res/res/values/config.xml
の次の値を置き換えるリソース オーバーレイをデバイス メーカーが定義する必要があります。
<!-- Maximum number of supported users --> <integer name="config_multiuserMaximumUsers">1</integer> <!-- Whether Multiuser UI should be shown --> <bool name="config_enableMultiUserUI">false</bool>
このオーバーレイを適用して、デバイスでゲストユーザーとセカンダリ ユーザーを有効にするには、Android ビルドシステムの DEVICE_PACKAGE_OVERLAYS
機能を使用して、次のように値を置き換えます。
config_multiuserMaximumUsers
の値を1
よりも大きい値に置き換えるtrue
でconfig_enableMultiUserUI
デバイス メーカーは、最大ユーザー数を決定できます。デバイス メーカーなどが設定を変更する場合は、Android 互換性定義ドキュメント(CDD)で定義されているとおりに SMS と電話が機能することを確認する必要があります。
複数のユーザーを管理する
ユーザーとプロファイルの管理は、制限付きプロファイルを除いて、DevicePolicyManager
クラスの API をプログラムで呼び出して使用制限を設定するアプリケーションによって行います。
学校や企業では、ユーザーとプロファイルを使用して、デバイスの使用期間と使用できるアプリとデータの範囲を管理できます。上記のユーザータイプおよびプロファイル タイプと UserManager API を組み合わせることで、それぞれのユースケースに合った独自のソリューションを構築できます。
マルチユーザー システムの動作
複数のユーザーが追加されているデバイスで、別のユーザーがフォアグラウンドで動作を開始すると、実行中の一部の機能が停止します。アプリのデータはユーザーごとに分かれているため、アプリの状態はユーザーによって異なります。たとえば、現在フォーカスされていないユーザーのアカウントに送信されたメールは、そのユーザーとアカウントがデバイスでアクティブになるまで利用できません。
デフォルトでは、システム ユーザーのみが通話とテキスト メッセージへのフルアクセス権を持ちます。セカンダリ ユーザーは着信を受けることはできますが、テキスト メッセージの送受信はできません。それらの機能は、管理者ユーザーが他のユーザーに対して有効にする必要があります。
注: セカンダリ ユーザーの通話機能と SMS 機能を有効または無効にするには、[設定] > [ユーザー] に移動してユーザーを選択し、[通話と SMS を許可する] の設定をオンまたはオフにします。
セカンダリ ユーザーがバックグラウンドで動作している場合、いくつかの制限があります。たとえば、バックグラウンドのセカンダリ ユーザーがユーザー インターフェースを表示したり、Bluetooth サービスをアクティブにしたりすることはできません。また、フォアグラウンドのユーザーの操作に追加のメモリが必要な場合、バックグラウンドのセカンダリ ユーザーはシステム プロセスによって停止されます。
Android デバイスで複数のユーザーを使用する場合は、次の点に注意してください。
- 通知は、1 人のユーザーのすべてのアカウントに対して同時に表示されます。
- 他のユーザーの通知は、そのユーザーがアクティブになるまで表示されません。
- 各ユーザーは、アプリをインストールして配置するためのワークスペースを持ちます。
- ユーザーは他のユーザーのアプリデータにアクセスできません。
- ユーザーは、すべてのユーザー向けにインストールされているアプリに影響を与えることができます。
- 管理者ユーザーは、セカンダリ ユーザーのアプリまたはセカンダリ ユーザーによって確立されたワークスペース全体を削除できます。
Android 7.0 では、次のような拡張機能が追加されています。
- 仕事用プロファイルを切り替える: ユーザーは、管理対象プロファイルを無効にできます(仕事中でないときなど)。この機能は、UserManagerService で
ActivityManagerNative#stopUser()
を呼び出してユーザーを停止することで実現します。 - 常時接続 VPN を設定する: ユーザー、Device DPC、Managed Profile DPC が VPN アプリケーションを常時接続に設定できるようになりました(管理対象プロファイルのアプリケーションにのみ該当)。有効にすると、アプリケーションはパブリック ネットワークにアクセスできなくなります。ネットワーク リソースへのアクセスは、VPN 接続が確立されて、VPN 接続経由でアクセスできるようになるまで停止されます。
device_admin
を報告するデバイスでは、常時接続の VPN を実装する必要があります。
Android 7.0 デバイスの管理機能の詳細については、Android for Work をご覧ください。
Android Automotive でのマルチユーザー
Android Automotive では、Android のマルチユーザー機能を使用して、デバイスの共有を実現しています。
Automotive ユーザータイプ
上記のユーザータイプに加えて、Automotive ビルドでは次の特徴的なユーザータイプが存在します。
- ヘッドレス システム ユーザー: このシステム ユーザーは、すべてのシステム サービスをホストします。Automotive でマルチユーザーをサポートするには、システム ユーザーはヘッドレスでもある必要があります。ヘッドレス システム ユーザーは 1 人だけ設定できます。ヘッドレス システム ユーザーには以下の特徴があります。
- 常にバックグラウンドで動作している必要があります。
- デバイスのプロビジョニングの場合を除き、ユーザーが直接削除またはアクセスすることはできません。たとえば、ユーザーがこのユーザータイプに切り替えて、アプリのダウンロードやアカウントの追加などを行うことはできません。
- 出荷時設定へのリセットでのみ削除できます。
- 通常のユーザーです。前述のセカンダリ ユーザーと同じですが、セカンダリ ユーザーには以下の異なる特徴があります。
- バックグラウンドで実行されません(切り替えられた後)。
- ユーザー インターフェースから直接作成できます。
- 個別のアプリデータを持ちますが、一部のシステム全体の設定は共有します。たとえば、Wi-Fi や Bluetooth などの設定は共有します。
注意点
Automotive でヘッドレス システム ユーザーと通常の(セカンダリ)ユーザーに適用される例外は次のとおりです。
- ヘッドレス システム ユーザーは仕事用プロファイルをサポートしていません。
- デフォルトでは、通常の(セカンダリ)ユーザーは通話やテキスト メッセージへのフルアクセス権があります。
- デフォルトでは、通常の(セカンダリ)ユーザーはバックグラウンドで実行されません。
ヘッドレス システム ユーザーを有効にする
Android 10 以降、マルチユーザー機能を自動車のユースケースに使用できます。重要な違いは次のとおりです。
- システム ユーザーはヘッドレス システム ユーザーとなり、バックグラウンドでのみ動作します。
- ユーザーがシステム ユーザーとやり取りすることはできません。
ヘッドレス システム ユーザーを有効にするには、デバイス メーカーが上記の説明のようにマルチユーザーを有効にする必要があります。
ヘッドレス ユーザーが有効になっている場合:- デバイスを Automotive として宣言するには、
android.hardware.type.automotive
という機能を追加します。 ro.fw.headless_system_user
をtrue
に設定します。config_multiuserMaximumUsers
の値を2
以上に設定します。
詳しくは、Automotive のマルチユーザー サポートをご覧ください。