Android APIs
public class

UserManager

extends Object
java.lang.Object
   ↳ android.os.UserManager

Class Overview

Manages users and user details on a multi-user system.

Summary

Constants
String ALLOW_PARENT_PROFILE_APP_LINKING Allows apps in the parent profile to handle web links from the managed profile.
String DISALLOW_ADD_USER Specifies if a user is disallowed from adding new users and profiles.
String DISALLOW_ADJUST_VOLUME Specifies if a user is disallowed from adjusting the master volume.
String DISALLOW_APPS_CONTROL Specifies if a user is disallowed from modifying applications in Settings or launchers.
String DISALLOW_CONFIG_BLUETOOTH Specifies if a user is disallowed from configuring bluetooth.
String DISALLOW_CONFIG_CELL_BROADCASTS Specifies if a user is disallowed from configuring cell broadcasts.
String DISALLOW_CONFIG_CREDENTIALS Specifies if a user is disallowed from configuring user credentials.
String DISALLOW_CONFIG_MOBILE_NETWORKS Specifies if a user is disallowed from configuring mobile networks.
String DISALLOW_CONFIG_TETHERING Specifies if a user is disallowed from configuring Tethering & portable hotspots.
String DISALLOW_CONFIG_VPN Specifies if a user is disallowed from configuring VPN.
String DISALLOW_CONFIG_WIFI Specifies if a user is disallowed from changing Wi-Fi access points.
String DISALLOW_CREATE_WINDOWS Specifies that windows besides app windows should not be created.
String DISALLOW_CROSS_PROFILE_COPY_PASTE Specifies if what is copied in the clipboard of this profile can be pasted in related profiles.
String DISALLOW_DEBUGGING_FEATURES Specifies if a user is disallowed from enabling or accessing debugging features.
String DISALLOW_FACTORY_RESET Specifies if a user is disallowed from factory resetting from Settings.
String DISALLOW_FUN Specifies if the user is not allowed to have fun.
String DISALLOW_INSTALL_APPS Specifies if a user is disallowed from installing applications.
String DISALLOW_INSTALL_UNKNOWN_SOURCES Specifies if a user is disallowed from enabling the "Unknown Sources" setting, that allows installation of apps from unknown sources.
String DISALLOW_MODIFY_ACCOUNTS Specifies if a user is disallowed from adding and removing accounts, unless they are programmatically added by Authenticator.
String DISALLOW_MOUNT_PHYSICAL_MEDIA Specifies if a user is disallowed from mounting physical external media.
String DISALLOW_NETWORK_RESET Specifies if a user is disallowed from resetting network settings from Settings.
String DISALLOW_OUTGOING_BEAM Specifies if the user is not allowed to use NFC to beam out data from apps.
String DISALLOW_OUTGOING_CALLS Specifies that the user is not allowed to make outgoing phone calls.
String DISALLOW_REMOVE_USER When set on the primary user this specifies if the user can remove other users.
String DISALLOW_SAFE_BOOT Specifies if the user is not allowed to reboot the device into safe boot mode.
String DISALLOW_SHARE_LOCATION Specifies if a user is disallowed from turning on location sharing.
String DISALLOW_SMS Specifies that the user is not allowed to send or receive SMS messages.
String DISALLOW_UNINSTALL_APPS Specifies if a user is disallowed from uninstalling applications.
String DISALLOW_UNMUTE_MICROPHONE Specifies if a user is disallowed from adjusting microphone volume.
String DISALLOW_USB_FILE_TRANSFER Specifies if a user is disallowed from transferring files over USB.
String ENSURE_VERIFY_APPS Specifies if a user is disallowed from disabling application verification.
String KEY_RESTRICTIONS_PENDING Application restriction key that is used to indicate the pending arrival of real restrictions for the app.
Public Methods
Bundle getApplicationRestrictions(String packageName)
Returns a Bundle containing any saved application restrictions for this user, for the given package name.
long getSerialNumberForUser(UserHandle user)
Return the serial number for a user.
int getUserCount()
Return the number of users currently created on the device.
long getUserCreationTime(UserHandle userHandle)
Returns creation time of the user or of a managed profile associated with the calling user.
UserHandle getUserForSerialNumber(long serialNumber)
Return the user associated with a serial number previously returned by getSerialNumberForUser(UserHandle).
String getUserName()
Returns the user name of the user making this call.
List<UserHandle> getUserProfiles()
Returns a list of UserHandles for profiles associated with the user that the calling process is running on, including the user itself.
Bundle getUserRestrictions()
Returns the user-wide restrictions imposed on this user.
Bundle getUserRestrictions(UserHandle userHandle)
Returns the user-wide restrictions imposed on the user specified by userHandle.
boolean hasUserRestriction(String restrictionKey)
Returns whether the current user has been disallowed from performing certain actions or setting certain settings.
boolean isSystemUser()
Used to check if this process is running under the system user.
boolean isUserAGoat()
Used to determine whether the user making this call is subject to teleportations.
boolean isUserRunning(UserHandle user)
Return whether the given user is actively running.
boolean isUserRunningOrStopping(UserHandle user)
Return whether the given user is actively running or stopping.
boolean setRestrictionsChallenge(String newPin)
This method was deprecated in API level 23. The restrictions PIN functionality is no longer provided by the system. This method is preserved for backwards compatibility reasons and always returns false.
void setUserRestriction(String key, boolean value)
void setUserRestrictions(Bundle restrictions)
void setUserRestrictions(Bundle restrictions, UserHandle userHandle)
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final String ALLOW_PARENT_PROFILE_APP_LINKING

Added in API level 23

Allows apps in the parent profile to handle web links from the managed profile. This user restriction has an effect only in a managed profile. If set: Intent filters of activities in the parent profile with action ACTION_VIEW, category CATEGORY_BROWSABLE, scheme http or https, and which define a host can handle intents from the managed profile. The default value is false.

Key for user restrictions.

Type: Boolean

Constant Value: "allow_parent_profile_app_linking"

public static final String DISALLOW_ADD_USER

Added in API level 21

Specifies if a user is disallowed from adding new users and profiles. This can only be set by device owners and profile owners on the primary user. The default value is false.

This restriction has no effect on secondary users and managed profiles since only the primary user can add other users.

Key for user restrictions.

Type: Boolean

Constant Value: "no_add_user"

public static final String DISALLOW_ADJUST_VOLUME

Added in API level 21

Specifies if a user is disallowed from adjusting the master volume. If set, the master volume will be muted. This can only be set by device owners and profile owners on the primary user. The default value is false.

Key for user restrictions.

Type: Boolean

Constant Value: "no_adjust_volume"

public static final String DISALLOW_APPS_CONTROL

Added in API level 21

Specifies if a user is disallowed from modifying applications in Settings or launchers. The following actions will not be allowed when this restriction is enabled:

  • uninstalling apps
  • disabling apps
  • clearing app caches
  • clearing app data
  • force stopping apps
  • clearing app defaults
  • The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_control_apps"

    public static final String DISALLOW_CONFIG_BLUETOOTH

    Added in API level 18

    Specifies if a user is disallowed from configuring bluetooth. This does not restrict the user from turning bluetooth on or off. The default value is false.

    This restriction has no effect in a managed profile.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_config_bluetooth"

    public static final String DISALLOW_CONFIG_CELL_BROADCASTS

    Added in API level 21

    Specifies if a user is disallowed from configuring cell broadcasts. This can only be set by device owners and profile owners on the primary user. The default value is false.

    This restriction has no effect on secondary users and managed profiles since only the primary user can configure cell broadcasts.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_config_cell_broadcasts"

    public static final String DISALLOW_CONFIG_CREDENTIALS

    Added in API level 18

    Specifies if a user is disallowed from configuring user credentials. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_config_credentials"

    public static final String DISALLOW_CONFIG_MOBILE_NETWORKS

    Added in API level 21

    Specifies if a user is disallowed from configuring mobile networks. This can only be set by device owners and profile owners on the primary user. The default value is false.

    This restriction has no effect on secondary users and managed profiles since only the primary user can configure mobile networks.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_config_mobile_networks"

    public static final String DISALLOW_CONFIG_TETHERING

    Added in API level 21

    Specifies if a user is disallowed from configuring Tethering & portable hotspots. This can only be set by device owners and profile owners on the primary user. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_config_tethering"

    public static final String DISALLOW_CONFIG_VPN

    Added in API level 21

    Specifies if a user is disallowed from configuring VPN. The default value is false. This restriction has an effect in a managed profile only from M

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_config_vpn"

    public static final String DISALLOW_CONFIG_WIFI

    Added in API level 18

    Specifies if a user is disallowed from changing Wi-Fi access points. The default value is false.

    This restriction has no effect in a managed profile.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_config_wifi"

    public static final String DISALLOW_CREATE_WINDOWS

    Added in API level 21

    Specifies that windows besides app windows should not be created. This will block the creation of the following types of windows.

  • TYPE_TOAST
  • TYPE_PHONE
  • TYPE_PRIORITY_PHONE
  • TYPE_SYSTEM_ALERT
  • TYPE_SYSTEM_ERROR
  • TYPE_SYSTEM_OVERLAY
  • This can only be set by device owners and profile owners on the primary user. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_create_windows"

    public static final String DISALLOW_CROSS_PROFILE_COPY_PASTE

    Added in API level 21

    Specifies if what is copied in the clipboard of this profile can be pasted in related profiles. Does not restrict if the clipboard of related profiles can be pasted in this profile. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_cross_profile_copy_paste"

    public static final String DISALLOW_DEBUGGING_FEATURES

    Added in API level 21

    Specifies if a user is disallowed from enabling or accessing debugging features. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_debugging_features"

    public static final String DISALLOW_FACTORY_RESET

    Added in API level 21

    Specifies if a user is disallowed from factory resetting from Settings. This can only be set by device owners and profile owners on the primary user. The default value is false.

    This restriction has no effect on secondary users and managed profiles since only the primary user can factory reset the device.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_factory_reset"

    public static final String DISALLOW_FUN

    Added in API level 23

    Specifies if the user is not allowed to have fun. In some cases, the device owner may wish to prevent the user from experiencing amusement or joy while using the device. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_fun"

    public static final String DISALLOW_INSTALL_APPS

    Added in API level 18

    Specifies if a user is disallowed from installing applications. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_install_apps"

    public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES

    Added in API level 18

    Specifies if a user is disallowed from enabling the "Unknown Sources" setting, that allows installation of apps from unknown sources. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_install_unknown_sources"

    public static final String DISALLOW_MODIFY_ACCOUNTS

    Added in API level 18

    Specifies if a user is disallowed from adding and removing accounts, unless they are programmatically added by Authenticator. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_modify_accounts"

    public static final String DISALLOW_MOUNT_PHYSICAL_MEDIA

    Added in API level 21

    Specifies if a user is disallowed from mounting physical external media. This can only be set by device owners and profile owners on the primary user. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_physical_media"

    public static final String DISALLOW_NETWORK_RESET

    Added in API level 23

    Specifies if a user is disallowed from resetting network settings from Settings. This can only be set by device owners and profile owners on the primary user. The default value is false.

    This restriction has no effect on secondary users and managed profiles since only the primary user can reset the network settings of the device.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_network_reset"

    public static final String DISALLOW_OUTGOING_BEAM

    Added in API level 22

    Specifies if the user is not allowed to use NFC to beam out data from apps. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_outgoing_beam"

    public static final String DISALLOW_OUTGOING_CALLS

    Added in API level 21

    Specifies that the user is not allowed to make outgoing phone calls. Emergency calls are still permitted. The default value is false.

    This restriction has no effect on managed profiles since call intents are normally forwarded to the primary user.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_outgoing_calls"

    public static final String DISALLOW_REMOVE_USER

    Added in API level 18

    When set on the primary user this specifies if the user can remove other users. When set on a secondary user, this specifies if the user can remove itself. This restriction has no effect on managed profiles. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_remove_user"

    public static final String DISALLOW_SAFE_BOOT

    Added in API level 23

    Specifies if the user is not allowed to reboot the device into safe boot mode. This can only be set by device owners and profile owners on the primary user. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_safe_boot"

    public static final String DISALLOW_SHARE_LOCATION

    Added in API level 18

    Specifies if a user is disallowed from turning on location sharing. The default value is false.

    In a managed profile, location sharing always reflects the primary user's setting, but can be overridden and forced off by setting this restriction to true in the managed profile.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_share_location"

    public static final String DISALLOW_SMS

    Added in API level 21

    Specifies that the user is not allowed to send or receive SMS messages. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_sms"

    public static final String DISALLOW_UNINSTALL_APPS

    Added in API level 18

    Specifies if a user is disallowed from uninstalling applications. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_uninstall_apps"

    public static final String DISALLOW_UNMUTE_MICROPHONE

    Added in API level 21

    Specifies if a user is disallowed from adjusting microphone volume. If set, the microphone will be muted. This can only be set by device owners and profile owners on the primary user. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_unmute_microphone"

    public static final String DISALLOW_USB_FILE_TRANSFER

    Added in API level 18

    Specifies if a user is disallowed from transferring files over USB. This can only be set by device owners and profile owners on the primary user. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "no_usb_file_transfer"

    public static final String ENSURE_VERIFY_APPS

    Added in API level 21

    Specifies if a user is disallowed from disabling application verification. The default value is false.

    Key for user restrictions.

    Type: Boolean

    Constant Value: "ensure_verify_apps"

    public static final String KEY_RESTRICTIONS_PENDING

    Added in API level 22

    Application restriction key that is used to indicate the pending arrival of real restrictions for the app.

    Applications that support restrictions should check for the presence of this key. A true value indicates that restrictions may be applied in the near future but are not available yet. It is the responsibility of any management application that sets this flag to update it when the final restrictions are enforced.

    Key for application restrictions.

    Type: Boolean

    Constant Value: "restrictions_pending"

    Public Methods

    public Bundle getApplicationRestrictions (String packageName)

    Added in API level 18

    Returns a Bundle containing any saved application restrictions for this user, for the given package name. Only an application with this package name can call this method.

    Parameters
    packageName the package name of the calling application
    Returns
    • a Bundle with the restrictions as key/value pairs, or null if there are no saved restrictions. The values can be of type Boolean, String or String[], depending on the restriction type, as defined by the application.

    public long getSerialNumberForUser (UserHandle user)

    Added in API level 17

    Return the serial number for a user. This is a device-unique number assigned to that user; if the user is deleted and then a new user created, the new users will not be given the same serial number.

    Parameters
    user The user whose serial number is to be retrieved.
    Returns
    • The serial number of the given user; returns -1 if the given UserHandle does not exist.

    public int getUserCount ()

    Added in API level 17

    Return the number of users currently created on the device.

    public long getUserCreationTime (UserHandle userHandle)

    Added in API level 23

    Returns creation time of the user or of a managed profile associated with the calling user.

    Parameters
    userHandle user handle of the user or a managed profile associated with the calling user.
    Returns
    • creation time in milliseconds since Epoch time.

    public UserHandle getUserForSerialNumber (long serialNumber)

    Added in API level 17

    Return the user associated with a serial number previously returned by getSerialNumberForUser(UserHandle).

    Parameters
    serialNumber The serial number of the user that is being retrieved.
    Returns
    • Return the user associated with the serial number, or null if there is not one.

    public String getUserName ()

    Added in API level 17

    Returns the user name of the user making this call. This call is only available to applications on the system image; it requires the MANAGE_USERS permission.

    Returns
    • the user name

    public List<UserHandle> getUserProfiles ()

    Added in API level 21

    Returns a list of UserHandles for profiles associated with the user that the calling process is running on, including the user itself.

    Returns
    • A non-empty list of UserHandles associated with the calling user.

    public Bundle getUserRestrictions ()

    Added in API level 18

    Returns the user-wide restrictions imposed on this user.

    Returns
    • a Bundle containing all the restrictions.

    public Bundle getUserRestrictions (UserHandle userHandle)

    Added in API level 18

    Returns the user-wide restrictions imposed on the user specified by userHandle.

    Parameters
    userHandle the UserHandle of the user for whom to retrieve the restrictions.
    Returns
    • a Bundle containing all the restrictions.

    public boolean hasUserRestriction (String restrictionKey)

    Added in API level 21

    Returns whether the current user has been disallowed from performing certain actions or setting certain settings.

    Parameters
    restrictionKey The string key representing the restriction.
    Returns
    • true if the current user has the given restriction, false otherwise.

    public boolean isSystemUser ()

    Added in API level 23

    Used to check if this process is running under the system user. The system user is the initial user that is implicitly created on first boot and hosts most of the system services.

    Returns
    • whether this process is running under the system user.

    public boolean isUserAGoat ()

    Added in API level 17

    Used to determine whether the user making this call is subject to teleportations.

    As of LOLLIPOP, this method can now automatically identify goats using advanced goat recognition technology.

    Returns
    • Returns true if the user making this call is a goat.

    public boolean isUserRunning (UserHandle user)

    Added in API level 17

    Return whether the given user is actively running. This means that the user is in the "started" state, not "stopped" -- it is currently allowed to run code through scheduled alarms, receiving broadcasts, etc. A started user may be either the current foreground user or a background user; the result here does not distinguish between the two.

    Parameters
    user The user to retrieve the running state for.

    public boolean isUserRunningOrStopping (UserHandle user)

    Added in API level 17

    Return whether the given user is actively running or stopping. This is like isUserRunning(UserHandle), but will also return true if the user had been running but is in the process of being stopped (but is not yet fully stopped, and still running some code).

    Parameters
    user The user to retrieve the running state for.

    public boolean setRestrictionsChallenge (String newPin)

    Added in API level 19

    This method was deprecated in API level 23.
    The restrictions PIN functionality is no longer provided by the system. This method is preserved for backwards compatibility reasons and always returns false.

    Sets a new challenge PIN for restrictions. This is only for use by pre-installed apps and requires the MANAGE_USERS permission.

    Parameters
    newPin the PIN to use for challenge dialogs.
    Returns
    • Returns true if the challenge PIN was set successfully.

    public void setUserRestriction (String key, boolean value)

    Added in API level 18

    This method was deprecated in API level 21.
    use addUserRestriction(android.content.ComponentName, String) or clearUserRestriction(android.content.ComponentName, String) instead.

    Sets the value of a specific restriction. Requires the MANAGE_USERS permission.

    Parameters
    key the key of the restriction
    value the value for the restriction

    public void setUserRestrictions (Bundle restrictions)

    Added in API level 18

    This method was deprecated in API level 21.
    use addUserRestriction(android.content.ComponentName, String) or clearUserRestriction(android.content.ComponentName, String) instead.

    Sets all the user-wide restrictions for this user. Requires the MANAGE_USERS permission.

    Parameters
    restrictions the Bundle containing all the restrictions.

    public void setUserRestrictions (Bundle restrictions, UserHandle userHandle)

    Added in API level 18

    This method was deprecated in API level 21.
    use addUserRestriction(android.content.ComponentName, String) or clearUserRestriction(android.content.ComponentName, String) instead.

    Sets all the user-wide restrictions for the specified user. Requires the MANAGE_USERS permission.

    Parameters
    restrictions the Bundle containing all the restrictions.
    userHandle the UserHandle of the user for whom to set the restrictions.