Home | History | Annotate | Download | only in admin
      1 <html devsite>
      2   <head>
      3     <title>Supporting Multiple Users</title>
      4     <meta name="project_path" value="/_project.yaml" />
      5     <meta name="book_path" value="/_book.yaml" />
      6   </head>
      7   <body>
      8   <!--
      9       Copyright 2017 The Android Open Source Project
     10 
     11       Licensed under the Apache License, Version 2.0 (the "License");
     12       you may not use this file except in compliance with the License.
     13       You may obtain a copy of the License at
     14 
     15           http://www.apache.org/licenses/LICENSE-2.0
     16 
     17       Unless required by applicable law or agreed to in writing, software
     18       distributed under the License is distributed on an "AS IS" BASIS,
     19       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     20       See the License for the specific language governing permissions and
     21       limitations under the License.
     22   -->
     23 
     24 
     25 
     26 <p>Android supports multiple users on a single Android device by separating user
     27 accounts and application data. For instance, parents may allow their children to
     28 use the family tablet, or a critical response team might share a mobile device
     29 for on-call duty.</p>
     30 
     31 <h2 id=definitions>Terminology</h2>
     32 <p>Android uses the following terms when describing Android users and accounts.</p>
     33 
     34 <h3 id=general_defs>General</h3>
     35 <p>Android device administration uses the following general terms.</p>
     36 
     37 <ul>
     38   <li><em>User</em>. Each user is intended to be used by a different physical
     39   person. Each user has distinct application data and some unique settings, as
     40   well as a user interface to explicitly switch between users. A user can run in
     41   the background when another user is active; the system manages shutting down
     42   users to conserve resources when appropriate. Secondary users can be created
     43   either directly via the primary user interface or from a
     44   <a href="https://developer.android.com/guide/topics/admin/device-admin.html">Device
     45   Administration</a> application.</li>
     46   <li><em>Account</em>. Accounts are contained within a user but are not defined
     47   by a user, nor is a user defined by or linked to any given account. Users and
     48   profiles contain their own unique accounts but are not required to have
     49   accounts to be functional. The list of accounts differs by user. For details,
     50   refer to the
     51   <a href="https://developer.android.com/reference/android/accounts/Account.html">Account
     52   class</a> definition.</li>
     53   <li><em>Profile</em>. A profile has separated app data but shares some
     54   system-wide settings (for example, Wi-Fi and Bluetooth). A profile is a subset
     55   of and tied to the existence of a user. A user can have multiple profiles.
     56   They are created through a
     57   <a href="https://developer.android.com/guide/topics/admin/device-admin.html">Device
     58   Administration</a> application. A profile always has an immutable association
     59   to a parent user, defined by the user that created the profile. Profiles do not live beyond the lifetime of the creating user.</li>
     60   <li><em>App</em>. An applications data exists within each associated user.
     61   App data is sandboxed from other applications within the same user. Apps
     62   within the same user can interact with each other via IPC. For details, refer
     63   to <a href="https://developer.android.com/training/enterprise/index.html">Building
     64   Apps for Work</a>.</li>
     65 </ul>
     66 
     67 <h3 id=user_types>User types</h3>
     68 <p>Android device administration uses the following user types.</p>
     69 
     70 <ul>
     71   <li><em>Primary</em>. First user added to a device. The primary user
     72   cannot be removed except by factory reset and is always running even when
     73   other users are in the foreground. This user also has special privileges and
     74   settings only it can set.</li>
     75   <li><em>Secondary</em>. Any user added to the device other than the primary
     76   user. Secondary users can be removed (either by themselves or by the primary
     77   user) and cannot impact other users on a device. These users can run in the
     78   background and continue to have network connectivity.</li>
     79   <li><em>Guest</em>. Temporary secondary user. Guest users have an explicit
     80   option to quick delete the guest user when its usefulness is over. There can
     81   be only one guest user at a time.</li>
     82 </ul>
     83 
     84 <h3 id=profile_types>Profile types</h3>
     85 <p>Android device administration uses the following profile types.</p>
     86 
     87 <ul>
     88   <li><em>Managed</em>. Created by an application to contain work data
     89   and apps. They are managed exclusively by the profile owner (the app that
     90   created the corp profile). Launcher, notifications, and recent tasks are
     91   shared by the primary user and the corp profile.</li>
     92   <li><em>Restricted</em>. Uses accounts based off the primary user, who can
     93   control what apps are available on the restricted profile. Available only on
     94   tablets and television devices.</li>
     95 </ul>
     96 
     97 <h2 id=applying_the_overlay>Enabling multi-user</h2>
     98 
     99 <p>As of Android 5.0, the multi-user feature is disabled by default. To
    100 enable it, device manufacturers must define a resource overlay that replaces
    101 the following values in <code>frameworks/base/core/res/res/values/config.xml</code>:
    102 </p>
    103 
    104 <pre class="devsite-click-to-copy">
    105 &lt;!--  Maximum number of supported users --&gt;
    106 &lt;integer name="config_multiuserMaximumUsers"&gt;1&lt;/integer&gt;
    107 &lt;!--  Whether Multiuser UI should be shown --&gt;
    108 &lt;bool name="config_enableMultiUserUI"&gt;false&lt;/bool&gt;
    109 </pre>
    110 
    111 <p>To apply this overlay and enable guest and secondary users on the device, use
    112 the <code>DEVICE_PACKAGE_OVERLAYS</code> feature of the Android build system to:</p>
    113 
    114 <ul>
    115   <li>Replace the value for <code>config_multiuserMaximumUsers</code> with one
    116     greater than 1</li>
    117   <li>Replace the value of <code>config_enableMultiUserUI</code> with:
    118   <code>true</code></li>
    119 </ul>
    120 
    121 <p>Device manufacturers may decide upon the maximum number of users. If device
    122 manufacturers or others have modified settings, they must ensure SMS and
    123 telephony work as defined in the
    124 <a href="/compatibility/android-cdd.pdf">Android Compatibility
    125 Definition Document</a> (CDD).</p>
    126 
    127 <h2 id=managing_users>Managing multiple users</h2>
    128 
    129 <p>Management of users and profiles (with the exception of restricted profiles)
    130 is performed by applications that programmatically invoke API in the
    131 <code>DevicePolicyManager</code> class to restrict use.</p>
    132 
    133 <p>Schools and enterprises may employ users and profiles to manage the lifetime
    134 and scope of apps and data on devices, using the types outlined above in
    135 conjunction with the
    136 <a href="http://developer.android.com/reference/android/os/UserManager.html">UserManager
    137 API</a> to build unique solutions tailored to their use cases.</p>
    138 
    139 
    140 <h2 id=effects>Multi-user system behavior</h2>
    141 
    142 <p>When users are added to a device, some functionality is curtailed when
    143 another user is in the foreground. Since app data is separated by user, the
    144 state of those apps differs by user. For example, email destined for an account
    145 of a user not currently in focus wont be available until that user and account
    146 are active on the device.</p>
    147 
    148 <p>By default, only the primary user has full access to phone calls and texts.
    149 The secondary user may receive inbound calls but cannot send or receive texts.
    150 The primary user must enable these functions for others.</p>
    151 
    152 <p class="note"><strong>Note</strong>: To enable or disable the phone and SMS
    153 functions for a secondary user, go to <em>Settings > Users</em>, select the
    154 user, and switch the <em>Allow phone calls and SMS</em> setting to off.</p>
    155 
    156 <p>Some restrictions exist when a secondary user is in background. For instance,
    157 the background secondary user cannot display the user interface or make
    158 Bluetooth services active. In addition, the system process will halt background
    159 secondary users if the device needs additional memory for operations in the
    160 foreground user.</p>
    161 
    162 <p>When employing multiple users on an Android device, keep the following
    163 behavior in mind:</p>
    164 
    165 <ul>
    166   <li>Notifications appear for all accounts of a single user at once.</li>
    167   <li>Notifications for other users do not appear until active.</li>
    168   <li>Each user gets a workspace to install and place apps.</li>
    169   <li>No user has access to the app data of another user.</li>
    170   <li>Any user can affect the installed apps for all users.</li>
    171   <li>The primary user can remove apps or even the entire workspace established
    172   by secondary users.</li>
    173 </ul>
    174 
    175 <p>Android 7.0 includes several enhancements, including:</p>
    176 
    177 <ul>
    178   <li><em>Toggle work profile</em>. Users can disable their managed profile
    179   (such as when not at work). This functionality is achieved by stopping the
    180   user; UserManagerService calls <code>ActivityManagerNative#stopUser()</code>.
    181   </li>
    182   <li><em>Always-on VPN</em>. VPN applications can now be set to always-on by
    183   the user, Device DPC, or Managed Profile DPC (applies only to Managed Profile
    184   applications). When enabled, applications cannot access the public network
    185   (access to network resources is stopped until the VPN has connected and
    186   connections can be routed over it). Devices that report
    187   <code>device_admin</code> must implement always-on VPN.</li>
    188 </ul>
    189 
    190 <p>For more details on Android 7.0 device administration features, refer to
    191 <a href="https://developer.android.com/about/versions/nougat/android-7.0.html#android_for_work">Android
    192 for Work</a>.</p>
    193 
    194   </body>
    195 </html>
    196