複数ユーザーのサポート

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 よりも大きい値に置き換える
  • trueconfig_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 以降、マルチユーザー機能を自動車のユースケースに使用できます。重要な違いは次のとおりです。

  • システム ユーザーはヘッドレス システム ユーザーとなり、バックグラウンドでのみ動作します。
  • ユーザーがシステム ユーザーとやり取りすることはできません。

ヘッドレス システム ユーザーを有効にするには、デバイス メーカーが上記の説明のようにマルチユーザーを有効にする必要があります。

ヘッドレス ユーザーが有効になっている場合:
  1. デバイスを Automotive として宣言するには、android.hardware.type.automotive という機能を追加します。
  2. ro.fw.headless_system_usertrue に設定します。
  3. config_multiuserMaximumUsers の値を 2 以上に設定します。

詳しくは、Automotive のマルチユーザー サポートをご覧ください。