複数ユーザーのサポート

Android では、各ユーザーにそれぞれ異なるアカウントとアプリケーション データを提供して、1 台のデバイスで複数のユーザーをサポートします。たとえば、保護者がお子様に家族のタブレットを使用することを許可したり、家族が自動車を共有したり、緊急対応チームがモバイル デバイスを通話用に共有したりできます。

用語

Android では、Android のユーザーとアカウントを説明する際に、次の用語を使用します。

全般

Android デバイスの管理に関しては、次の一般的な用語が使用されます。

  • ユーザー: 各ユーザーは、それぞれ異なる人物によって使用されることが想定されています。ユーザーごとに個別のアプリケーション データ、固有の設定、ユーザー インターフェースがあり、これらはユーザー間で明示的に切り替えられます。あるユーザーがアクティブなときに、別のユーザーがバックグラウンドで動作していることもあります。システムは、リソースを節約するために、必要に応じてユーザーをシャットダウンします。セカンダリ ユーザーは、メインユーザーのインターフェースか、デバイス管理アプリケーションから直接作成できます。
  • アカウント: アカウントはユーザーに含まれますが、ユーザーによって定義されることはありません。同様に、ユーザーがアカウントによって定義されたり、特定のアカウントにリンクされたりすることはありません。ユーザーとプロファイルには固有のアカウントが含まれますが、アカウントがなくてもそのユーザーとプロファイルは機能します。アカウントのリストはユーザーによって異なります。詳細については、Account クラスの定義を参照してください。
  • プロファイル: プロファイルのアプリケーション データはそれぞれ異なりますが、システム全体に関する一部の設定(Wi-Fi や Bluetooth など)は共有されます。プロファイルは、ユーザーのサブセットであり、ユーザーに関連付けられます。ユーザーは複数のプロファイルを持つことができます。プロファイルは、デバイス管理アプリケーションで作成されます。プロファイルは、そのプロファイルを作成したユーザーによって親ユーザーへの関連付けが定義され、その関連付けは変更できません。また、そのプロファイルを作成したユーザーの存続期間を超えて存続することはできません。
  • アプリ: アプリケーションのデータは、関連付けられた各ユーザー内に存在します。アプリケーション データは、同じユーザー内の他のアプリケーションからサンドボックス化されています。同じユーザー内の複数のアプリケーションは、IPC 経由で相互にやり取りできます。詳しくは、Apps for Work を構築するをご覧ください。

ユーザータイプ

Android デバイスの管理では、次のユーザータイプが使用されます。

  • メインユーザー: デバイスに追加された最初のユーザー。メインユーザーは出荷時の設定以外では削除できず、他のユーザーがフォアグラウンドで動作していても常に動作し続けます。このユーザーは特別な権限と設定を持ち、その設定はメインユーザーのみが変更できます。
  • セカンダリ ユーザー: デバイスに追加されたメインユーザー以外のユーザー。セカンダリ ユーザーは、自分自身とメインユーザーが削除でき、デバイス上の他のユーザーに影響することはありません。セカンダリ ユーザーはバックグラウンドで動作でき、その間もネットワーク接続を継続できます。
  • ゲストユーザー: 一時的なセカンダリ ユーザー。ゲストユーザーには、ゲストユーザーを削除するための明示的なオプションがあり、有用性がなくなったゲストユーザーをすばやく削除できます。ゲストユーザーは同時に 1 つのみ設定できます。

プロファイル タイプ

Android デバイスの管理では、次のプロファイル タイプが使用されます。

  • 管理対象プロファイル: アプリによって作成され、仕事用のデータとアプリが含まれます。管理対象プロファイルはそのプロファイル オーナーのみが管理できます。ランチャー、通知、最近のタスクは、メインユーザーと企業プロファイルによって共有されます。
  • 制限付きプロファイル: メインユーザーによって作成されるユーザー アカウントです。メインユーザーは制限付きプロファイルで使用できるアプリを制限できます。タブレット デバイスとテレビデバイスでのみ使用できます。

マルチユーザーを有効にする

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 よりも大きい値に置き換える
  • config_enableMultiUserUI の値を true に置き換える

デバイス メーカーは、最大ユーザー数を決定できます。デバイス メーカーなどが設定を変更する場合は、Android Compatibility Definition Document(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 などの設定は共有します。

注意点

ヘッドレス システム ユーザー、セカンダリ ユーザー、管理ユーザーには次の例外があります。

  • ヘッドレス システム ユーザーは仕事用プロファイルをサポートしていません。
  • セカンダリ ユーザーは、デフォルトで通話とテキスト メッセージへのフルアクセス権を持ちます。
  • デフォルトでは、セカンダリ ユーザーがバックグラウンドで動作することはありません。
  • デフォルトでは、管理ユーザーはユーザーを追加、削除したり、デバイスを初期状態にリセットしたりできます。

ヘッドレス システム ユーザーを有効にする

Android 10 以降、マルチユーザー機能を自動車のユースケースに使用できます。重要な違いは次のとおりです。

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

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

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