UserManager
public
class
UserManager
extends Object
java.lang.Object | |
↳ | android.os.UserManager |
Manages users and user details on a multi-user system. There are two major categories of users: fully customizable users with their own login, and managed profiles that share a workspace with a related user.
Users are different from accounts, which are managed by
AccountManager
. Each user can have their own set of accounts.
See DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE
for more on managed profiles.
Instances of this class must be obtained using Context.getSystemService(Class)
with the argument UserManager.class
or Context.getSystemService(String)
with the argument Context.USER_SERVICE
.
Summary
Nested classes | |
---|---|
class |
UserManager.UserOperationException
Thrown to indicate user operation failed. |
Constants | |
---|---|
String |
ALLOW_PARENT_PROFILE_APP_LINKING
Allows apps in the parent profile to handle web links from the managed profile. |
String |
DISALLOW_ADD_MANAGED_PROFILE
Specifies if a user is disallowed from adding managed profiles. |
String |
DISALLOW_ADD_USER
Specifies if a user is disallowed from adding new users. |
String |
DISALLOW_ADJUST_VOLUME
Specifies if a user is disallowed from adjusting the master volume. |
String |
DISALLOW_AIRPLANE_MODE
Specifies if airplane mode is disallowed on the device. |
String |
DISALLOW_AMBIENT_DISPLAY
Specifies if ambient display is disallowed for the user. |
String |
DISALLOW_APPS_CONTROL
Specifies if a user is disallowed from modifying applications in Settings or launchers. |
String |
DISALLOW_AUTOFILL
Specifies if a user is not allowed to use Autofill Services. |
String |
DISALLOW_BLUETOOTH
Specifies if bluetooth is disallowed on the device. |
String |
DISALLOW_BLUETOOTH_SHARING
Specifies if outgoing bluetooth sharing is disallowed on the device. |
String |
DISALLOW_CONFIG_BLUETOOTH
Specifies if a user is disallowed from configuring bluetooth. |
String |
DISALLOW_CONFIG_BRIGHTNESS
Specifies if a user is disallowed from configuring brightness. |
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_DATE_TIME
Specifies if date, time and timezone configuring is disallowed. |
String |
DISALLOW_CONFIG_LOCALE
Specifies if a user is disallowed from changing the device language. |
String |
DISALLOW_CONFIG_LOCATION
Specifies if a user is disallowed from enabling or disabling location providers. |
String |
DISALLOW_CONFIG_MOBILE_NETWORKS
Specifies if a user is disallowed from configuring mobile networks. |
String |
DISALLOW_CONFIG_SCREEN_TIMEOUT
Specifies if a user is disallowed from changing screen off timeout. |
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 a 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_DATA_ROAMING
Specifies if a user is not allowed to use cellular data when roaming. |
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
|
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_PRINTING
Specifies whether the user is allowed to print. |
String |
DISALLOW_REMOVE_MANAGED_PROFILE
Specifies if managed profiles of this user can be removed, other than by its profile owner. |
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_SET_USER_ICON
Specifies if a user is not allowed to change their icon. |
String |
DISALLOW_SET_WALLPAPER
User restriction to disallow setting a wallpaper. |
String |
DISALLOW_SHARE_INTO_MANAGED_PROFILE
Specifies whether the user can share file / picture / data from the primary user into the managed profile, either by sending them from the primary side, or by picking up data within an app in the managed profile. |
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_SYSTEM_ERROR_DIALOGS
Specifies that system error dialogs for crashed or unresponsive apps should not be shown. |
String |
DISALLOW_UNIFIED_PASSWORD
Specifies that the managed profile is not allowed to have unified lock screen challenge with the primary user. |
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 |
DISALLOW_USER_SWITCH
Specifies if user switching is blocked on the current user. |
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. |
int |
USER_CREATION_FAILED_NOT_PERMITTED
Error result indicating that this user is not allowed to add other users on this device. |
int |
USER_CREATION_FAILED_NO_MORE_USERS
Error result indicating that no more users can be created on this device. |
int |
USER_OPERATION_ERROR_CURRENT_USER
Indicates user operation failed because the target user is in the foreground. |
int |
USER_OPERATION_ERROR_LOW_STORAGE
Indicates user operation failed because device has low data storage. |
int |
USER_OPERATION_ERROR_MANAGED_PROFILE
Indicates user operation failed because target user is a managed profile. |
int |
USER_OPERATION_ERROR_MAX_RUNNING_USERS
Indicates user operation failed because maximum running user limit has been reached. |
int |
USER_OPERATION_ERROR_MAX_USERS
Indicates user operation failed because maximum user limit has been reached. |
int |
USER_OPERATION_ERROR_UNKNOWN
Indicates user operation failed for unknown reason. |
int |
USER_OPERATION_SUCCESS
Indicates user operation is successful. |
Public methods | |
---|---|
static
Intent
|
createUserCreationIntent(String userName, String accountName, String accountType, PersistableBundle accountOptions)
Returns an intent to create a user for the provided name and account name. |
Bundle
|
getApplicationRestrictions(String packageName)
Returns a |
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 |
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(UserHandle userHandle)
Returns the user-wide restrictions imposed on the user specified by |
Bundle
|
getUserRestrictions()
Returns the user-wide restrictions imposed on this user. |
boolean
|
hasUserRestriction(String restrictionKey)
Returns whether the current user has been disallowed from performing certain actions or setting certain settings. |
boolean
|
isDemoUser()
Checks if the calling app is running in a demo user. |
boolean
|
isQuietModeEnabled(UserHandle userHandle)
Returns whether the given profile is in quiet mode or not. |
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
|
isUserUnlocked(UserHandle user)
Return whether the given user is running in an "unlocked" state. |
boolean
|
isUserUnlocked()
Return whether the calling user is running in an "unlocked" state. |
boolean
|
requestQuietModeEnabled(boolean enableQuietMode, UserHandle userHandle)
Enables or disables quiet mode for a managed profile. |
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)
This method was deprecated
in API level 21.
use |
void
|
setUserRestrictions(Bundle restrictions, UserHandle userHandle)
This will no longer work. |
void
|
setUserRestrictions(Bundle restrictions)
This will no longer work. |
static
boolean
|
supportsMultipleUsers()
Returns whether this device supports multiple users with their own login and customizable space. |
Inherited methods | |
---|---|
Constants
ALLOW_PARENT_PROFILE_APP_LINKING
public static final String ALLOW_PARENT_PROFILE_APP_LINKING
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
Intent.ACTION_VIEW
,
category Intent.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
See also:
Constant Value: "allow_parent_profile_app_linking"
DISALLOW_ADD_MANAGED_PROFILE
public static final String DISALLOW_ADD_MANAGED_PROFILE
Specifies if a user is disallowed from adding managed profiles.
The default value for an unmanaged user is false
.
For users with a device owner set, the default is true
.
This restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_add_managed_profile"
DISALLOW_ADD_USER
public static final String DISALLOW_ADD_USER
Specifies if a user is disallowed from adding new users. 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
See also:
Constant Value: "no_add_user"
DISALLOW_ADJUST_VOLUME
public static final String DISALLOW_ADJUST_VOLUME
Specifies if a user is disallowed from adjusting the master volume. If set, the master volume
will be muted. This can be set by device owners from API 21 and profile owners from API 24.
The default value is false
.
When the restriction is set by profile owners, then it only applies to relevant profiles.
This restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_adjust_volume"
DISALLOW_AIRPLANE_MODE
public static final String DISALLOW_AIRPLANE_MODE
Specifies if airplane mode is disallowed on the device.
This restriction can only be set by the device owner and the profile owner on the primary user and it applies globally - i.e. it disables airplane mode on the entire device.
The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_airplane_mode"
DISALLOW_AMBIENT_DISPLAY
public static final String DISALLOW_AMBIENT_DISPLAY
Specifies if ambient display is disallowed for the user.
The default value is false
.
This user restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_ambient_display"
DISALLOW_APPS_CONTROL
public static final String DISALLOW_APPS_CONTROL
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:
The default value is false
.
Note: The user will still be able to perform those actions via other
means (such as adb). Third party apps will also be able to uninstall apps via the
PackageInstaller
. DISALLOW_UNINSTALL_APPS
or
DevicePolicyManager.setUninstallBlocked(ComponentName, String, boolean)
should be
used to prevent the user from uninstalling apps completely, and
DevicePolicyManager.addPersistentPreferredActivity(ComponentName, IntentFilter, ComponentName)
to add a default intent handler for a given intent filter.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_control_apps"
DISALLOW_AUTOFILL
public static final String DISALLOW_AUTOFILL
Specifies if a user is not allowed to use Autofill Services.
Device owner and profile owner can set this restriction. When it is set by device owner, only the target user will be affected.
The default value is false
.
See also:
Constant Value: "no_autofill"
DISALLOW_BLUETOOTH
public static final String DISALLOW_BLUETOOTH
Specifies if bluetooth is disallowed on the device.
This restriction can only be set by the device owner and the profile owner on the primary user and it applies globally - i.e. it disables bluetooth on the entire device.
The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_bluetooth"
DISALLOW_BLUETOOTH_SHARING
public static final String DISALLOW_BLUETOOTH_SHARING
Specifies if outgoing bluetooth sharing is disallowed on the device. Device owner and profile owner can set this restriction. When it is set by device owner, all users on this device will be affected.
Default is true
for managed profiles and false for otherwise. When a device
upgrades to Build.VERSION_CODES.O
, the system sets it for all existing
managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_bluetooth_sharing"
DISALLOW_CONFIG_BLUETOOTH
public static final String DISALLOW_CONFIG_BLUETOOTH
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 doesn't prevent the user from using bluetooth. For disallowing usage of
bluetooth completely on the device, use DISALLOW_BLUETOOTH
.
This restriction has no effect in a managed profile.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_bluetooth"
DISALLOW_CONFIG_BRIGHTNESS
public static final String DISALLOW_CONFIG_BRIGHTNESS
Specifies if a user is disallowed from configuring brightness. When device owner sets it, it'll only be applied on the target(system) user.
The default value is false
.
This user restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_brightness"
DISALLOW_CONFIG_CELL_BROADCASTS
public static final String DISALLOW_CONFIG_CELL_BROADCASTS
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
See also:
Constant Value: "no_config_cell_broadcasts"
DISALLOW_CONFIG_CREDENTIALS
public static final String DISALLOW_CONFIG_CREDENTIALS
Specifies if a user is disallowed from configuring user
credentials. The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_credentials"
DISALLOW_CONFIG_DATE_TIME
public static final String DISALLOW_CONFIG_DATE_TIME
Specifies if date, time and timezone configuring is disallowed.
When restriction is set by device owners, it applies globally - i.e., it disables date, time and timezone setting on the entire device and all users will be affected. When it's set by profile owners, it's only applied to the managed user.
The default value is false
.
This user restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_date_time"
DISALLOW_CONFIG_LOCALE
public static final String DISALLOW_CONFIG_LOCALE
Specifies if a user is disallowed from changing the device
language. The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_locale"
DISALLOW_CONFIG_LOCATION
public static final String DISALLOW_CONFIG_LOCATION
Specifies if a user is disallowed from enabling or disabling location providers. As a result, user is disallowed from turning on or off location. Device owner and profile owners can set this restriction and it only applies on the managed user.
In a managed profile, location sharing is forced off when it's off on primary user, so user can still turn off location sharing on managed profile when the restriction is set by profile owner on managed profile.
This user restriction is different from DISALLOW_SHARE_LOCATION
,
as the device owner or profile owner can still enable or disable location mode via
DevicePolicyManager.setSecureSetting(ComponentName, String, String)
when this restriction is on.
The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_location"
DISALLOW_CONFIG_MOBILE_NETWORKS
public static final String DISALLOW_CONFIG_MOBILE_NETWORKS
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
See also:
Constant Value: "no_config_mobile_networks"
DISALLOW_CONFIG_SCREEN_TIMEOUT
public static final String DISALLOW_CONFIG_SCREEN_TIMEOUT
Specifies if a user is disallowed from changing screen off timeout.
The default value is false
.
This user restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_screen_timeout"
DISALLOW_CONFIG_TETHERING
public static final String DISALLOW_CONFIG_TETHERING
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
.
In Android 9.0 or higher, if tethering is enabled when this restriction is set, tethering will be automatically turned off.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_tethering"
DISALLOW_CONFIG_VPN
public static final String DISALLOW_CONFIG_VPN
Specifies if a user is disallowed from configuring a VPN. The default value is
false
. This restriction has an effect when set by device owners and, in Android
6.0 (API level 23) or higher, profile owners.
This restriction also prevents VPNs from starting. However, in Android 7.0 (API level 24) or higher, the system does start always-on VPNs created by the device or profile owner.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_config_vpn"
DISALLOW_CONFIG_WIFI
public static final String DISALLOW_CONFIG_WIFI
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
See also:
Constant Value: "no_config_wifi"
DISALLOW_CREATE_WINDOWS
public static final String DISALLOW_CREATE_WINDOWS
Specifies that windows besides app windows should not be created. This will block the creation of the following types of windows.
WindowManager.LayoutParams.TYPE_TOAST
WindowManager.LayoutParams.TYPE_PHONE
WindowManager.LayoutParams.TYPE_PRIORITY_PHONE
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY
WindowManager.LayoutParams.TYPE_APPLICATION_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
See also:
Constant Value: "no_create_windows"
DISALLOW_CROSS_PROFILE_COPY_PASTE
public static final String DISALLOW_CROSS_PROFILE_COPY_PASTE
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
See also:
Constant Value: "no_cross_profile_copy_paste"
DISALLOW_DATA_ROAMING
public static final String DISALLOW_DATA_ROAMING
Specifies if a user is not allowed to use cellular data when roaming. This can only be set by
device owners. The default value is false
.
See also:
Constant Value: "no_data_roaming"
DISALLOW_DEBUGGING_FEATURES
public static final String DISALLOW_DEBUGGING_FEATURES
Specifies if a user is disallowed from enabling or
accessing debugging features. The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_debugging_features"
DISALLOW_FACTORY_RESET
public static final String DISALLOW_FACTORY_RESET
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
See also:
Constant Value: "no_factory_reset"
DISALLOW_FUN
public static final String DISALLOW_FUN
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
See also:
Constant Value: "no_fun"
DISALLOW_INSTALL_APPS
public static final String DISALLOW_INSTALL_APPS
Specifies if a user is disallowed from installing applications. This user restriction also
prevents device owners and profile owners installing apps. The default value is
false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_install_apps"
DISALLOW_INSTALL_UNKNOWN_SOURCES
public static final 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.
The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_install_unknown_sources"
DISALLOW_MODIFY_ACCOUNTS
public static final String DISALLOW_MODIFY_ACCOUNTS
Specifies if a user is disallowed from adding and removing accounts, unless they are
programmatically
added by
Authenticator.
The default value is false
.
From Build.VERSION_CODES.N
a profile or device owner app can still
use AccountManager
APIs to add or remove accounts when account
management is disallowed.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_modify_accounts"
DISALLOW_MOUNT_PHYSICAL_MEDIA
public static final String DISALLOW_MOUNT_PHYSICAL_MEDIA
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
See also:
Constant Value: "no_physical_media"
DISALLOW_NETWORK_RESET
public static final String DISALLOW_NETWORK_RESET
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
See also:
Constant Value: "no_network_reset"
DISALLOW_OUTGOING_BEAM
public static final String DISALLOW_OUTGOING_BEAM
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
See also:
Constant Value: "no_outgoing_beam"
DISALLOW_OUTGOING_CALLS
public static final String DISALLOW_OUTGOING_CALLS
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.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_outgoing_calls"
DISALLOW_PRINTING
public static final String DISALLOW_PRINTING
Specifies whether the user is allowed to print.
This restriction can be set by device or profile owner.
The default value is false
.
See also:
Constant Value: "no_printing"
DISALLOW_REMOVE_MANAGED_PROFILE
public static final String DISALLOW_REMOVE_MANAGED_PROFILE
Specifies if managed profiles of this user can be removed, other than by its profile owner.
The default value is false
.
This restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_remove_managed_profile"
DISALLOW_REMOVE_USER
public static final String DISALLOW_REMOVE_USER
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
See also:
Constant Value: "no_remove_user"
DISALLOW_SAFE_BOOT
public static final String DISALLOW_SAFE_BOOT
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
See also:
Constant Value: "no_safe_boot"
DISALLOW_SET_USER_ICON
public static final String DISALLOW_SET_USER_ICON
Specifies if a user is not allowed to change their icon. Device owner and profile owner
can set this restriction. When it is set by device owner, only the target user will be
affected. The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_set_user_icon"
DISALLOW_SET_WALLPAPER
public static final String DISALLOW_SET_WALLPAPER
User restriction to disallow setting a wallpaper. Profile owner and device owner
are able to set wallpaper regardless of this restriction.
The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_set_wallpaper"
DISALLOW_SHARE_INTO_MANAGED_PROFILE
public static final String DISALLOW_SHARE_INTO_MANAGED_PROFILE
Specifies whether the user can share file / picture / data from the primary user into the managed profile, either by sending them from the primary side, or by picking up data within an app in the managed profile.
When a managed profile is created, the system allows the user to send data from the primary
side to the profile by setting up certain default cross profile intent filters. If
this is undesired, this restriction can be set to disallow it. Note that this restriction
will not block any sharing allowed by explicit
DevicePolicyManager.addCrossProfileIntentFilter(ComponentName, IntentFilter, int)
calls by the profile owner.
This restriction is only meaningful when set by profile owner. When it is set by device owner, it does not have any effect.
The default value is false
.
See also:
Constant Value: "no_sharing_into_profile"
DISALLOW_SHARE_LOCATION
public static final String DISALLOW_SHARE_LOCATION
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
See also:
Constant Value: "no_share_location"
DISALLOW_SMS
public static final String DISALLOW_SMS
Specifies that the user is not allowed to send or receive
SMS messages. The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_sms"
DISALLOW_SYSTEM_ERROR_DIALOGS
public static final String DISALLOW_SYSTEM_ERROR_DIALOGS
Specifies that system error dialogs for crashed or unresponsive apps should not be shown.
In this case, the system will force-stop the app as if the user chooses the "close app"
option on the UI. A feedback report isn't collected as there is no way for the user to
provide explicit consent. The default value is false
.
When this user restriction is set by device owners, it's applied to all users. When set by the profile owner of the primary user or a secondary user, the restriction affects only the calling user. This user restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_system_error_dialogs"
DISALLOW_UNIFIED_PASSWORD
public static final String DISALLOW_UNIFIED_PASSWORD
Specifies that the managed profile is not allowed to have unified lock screen challenge with the primary user.
Note: Setting this restriction alone doesn't automatically set a
separate challenge. Profile owner can ask the user to set a new password using
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
and verify it using
DevicePolicyManager.isUsingUnifiedPassword(ComponentName)
.
Can be set by profile owners. It only has effect on managed profiles when set by managed profile owner. Has no effect on non-managed profiles or users.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_unified_password"
DISALLOW_UNINSTALL_APPS
public static final String DISALLOW_UNINSTALL_APPS
Specifies if a user is disallowed from uninstalling applications.
The default value is false
.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_uninstall_apps"
DISALLOW_UNMUTE_MICROPHONE
public static final String DISALLOW_UNMUTE_MICROPHONE
Specifies if a user is disallowed from adjusting microphone volume. If set, the microphone
will be muted. This can be set by device owners and profile owners. The default value is
false
.
This restriction has no effect on managed profiles.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "no_unmute_microphone"
DISALLOW_USB_FILE_TRANSFER
public static final String DISALLOW_USB_FILE_TRANSFER
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
See also:
Constant Value: "no_usb_file_transfer"
DISALLOW_USER_SWITCH
public static final String DISALLOW_USER_SWITCH
Specifies if user switching is blocked on the current user.
This restriction can only be set by the device owner, it will be applied to all users.
Device owner can still switch user via
DevicePolicyManager.switchUser(ComponentName, UserHandle)
when this restriction is
set.
The default value is false
.
See also:
Constant Value: "no_user_switch"
ENSURE_VERIFY_APPS
public static final String ENSURE_VERIFY_APPS
Specifies if a user is disallowed from disabling application verification. The default
value is false
.
In Android 8.0 (API level 26) and higher, this is a global user restriction. If a device owner or profile owner sets this restriction, the system enforces app verification across all users on the device. Running in earlier Android versions, this restriction affects only the profile that sets it.
Key for user restrictions.
Type: Boolean
See also:
Constant Value: "ensure_verify_apps"
KEY_RESTRICTIONS_PENDING
public static final String KEY_RESTRICTIONS_PENDING
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
See also:
Constant Value: "restrictions_pending"
USER_CREATION_FAILED_NOT_PERMITTED
public static final int USER_CREATION_FAILED_NOT_PERMITTED
Error result indicating that this user is not allowed to add other users on this device.
This is a result code returned from the activity created by the intent
createUserCreationIntent(String, String, String, PersistableBundle)
.
Constant Value: 1 (0x00000001)
USER_CREATION_FAILED_NO_MORE_USERS
public static final int USER_CREATION_FAILED_NO_MORE_USERS
Error result indicating that no more users can be created on this device.
This is a result code returned from the activity created by the intent
createUserCreationIntent(String, String, String, PersistableBundle)
.
Constant Value: 2 (0x00000002)
USER_OPERATION_ERROR_CURRENT_USER
public static final int USER_OPERATION_ERROR_CURRENT_USER
Indicates user operation failed because the target user is in the foreground.
Constant Value: 4 (0x00000004)
USER_OPERATION_ERROR_LOW_STORAGE
public static final int USER_OPERATION_ERROR_LOW_STORAGE
Indicates user operation failed because device has low data storage.
Constant Value: 5 (0x00000005)
USER_OPERATION_ERROR_MANAGED_PROFILE
public static final int USER_OPERATION_ERROR_MANAGED_PROFILE
Indicates user operation failed because target user is a managed profile.
Constant Value: 2 (0x00000002)
USER_OPERATION_ERROR_MAX_RUNNING_USERS
public static final int USER_OPERATION_ERROR_MAX_RUNNING_USERS
Indicates user operation failed because maximum running user limit has been reached.
Constant Value: 3 (0x00000003)
USER_OPERATION_ERROR_MAX_USERS
public static final int USER_OPERATION_ERROR_MAX_USERS
Indicates user operation failed because maximum user limit has been reached.
Constant Value: 6 (0x00000006)
USER_OPERATION_ERROR_UNKNOWN
public static final int USER_OPERATION_ERROR_UNKNOWN
Indicates user operation failed for unknown reason.
Constant Value: 1 (0x00000001)
USER_OPERATION_SUCCESS
public static final int USER_OPERATION_SUCCESS
Indicates user operation is successful.
Constant Value: 0 (0x00000000)
Public methods
createUserCreationIntent
public static Intent createUserCreationIntent (String userName, String accountName, String accountType, PersistableBundle accountOptions)
Returns an intent to create a user for the provided name and account name. The name and account name will be used when the setup process for the new user is started.
The intent should be launched using startActivityForResult and the return result will
indicate if the user consented to adding a new user and if the operation succeeded. Any
errors in creating the user will be returned in the result code. If the user cancels the
request, the return result will be Activity.RESULT_CANCELED
. On success, the
result code will be Activity.RESULT_OK
.
Use supportsMultipleUsers()
to first check if the device supports this operation
at all.
The new user is created but not initialized. After switching into the user for the first time, the preferred user name and account information are used by the setup process for that user.
Parameters | |
---|---|
userName |
String : Optional name to assign to the user.This value may be |
accountName |
String : Optional account name that will be used by the setup wizard to initialize
the user.This value may be |
accountType |
String : Optional account type for the account to be created. This is required
if the account name is specified.This value may be |
accountOptions |
PersistableBundle : Optional bundle of data to be passed in during account creation in the
new user via AccountManager.addAccount(String, String, String[], Bundle, android.app.Activity, android.accounts.AccountManagerCallback, Handler) .This value may be |
Returns | |
---|---|
Intent |
An Intent that can be launched from an Activity. |
getApplicationRestrictions
public Bundle getApplicationRestrictions (String packageName)
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.
The returned Bundle
consists of key-value pairs, as defined by the application,
where the types of values may be:
boolean
int
String
orString[]
- From
Build.VERSION_CODES.M
,Bundle
orBundle[]
NOTE: The method performs disk I/O and shouldn't be called on the main thread
This method may take several seconds to complete, so it should only be called from a worker thread.
Parameters | |
---|---|
packageName |
String : the package name of the calling application |
Returns | |
---|---|
Bundle |
a Bundle with the restrictions for that package, or an empty Bundle
if there are no saved restrictions. |
See also:
getSerialNumberForUser
public long getSerialNumberForUser (UserHandle user)
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 |
UserHandle : The user whose serial number is to be retrieved. |
Returns | |
---|---|
long |
The serial number of the given user; returns -1 if the given UserHandle does not exist. |
See also:
getUserCount
public int getUserCount ()
Return the number of users currently created on the device.
Returns | |
---|---|
int |
getUserCreationTime
public long getUserCreationTime (UserHandle userHandle)
Returns creation time of the user or of a managed profile associated with the calling user.
Parameters | |
---|---|
userHandle |
UserHandle : user handle of the user or a managed profile associated with the
calling user. |
Returns | |
---|---|
long |
creation time in milliseconds since Epoch time. |
getUserForSerialNumber
public UserHandle getUserForSerialNumber (long serialNumber)
Return the user associated with a serial number previously
returned by getSerialNumberForUser(UserHandle)
.
Parameters | |
---|---|
serialNumber |
long : The serial number of the user that is being
retrieved. |
Returns | |
---|---|
UserHandle |
Return the user associated with the serial number, or null if there is not one. |
See also:
getUserName
public String getUserName ()
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 | |
---|---|
String |
the user name |
getUserProfiles
public 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.
Returns | |
---|---|
List<UserHandle> |
A non-empty list of UserHandles associated with the calling user. |
getUserRestrictions
public Bundle getUserRestrictions (UserHandle userHandle)
Returns the user-wide restrictions imposed on the user specified by userHandle
.
Parameters | |
---|---|
userHandle |
UserHandle : the UserHandle of the user for whom to retrieve the restrictions. |
Returns | |
---|---|
Bundle |
a Bundle containing all the restrictions. |
getUserRestrictions
public Bundle getUserRestrictions ()
Returns the user-wide restrictions imposed on this user.
Returns | |
---|---|
Bundle |
a Bundle containing all the restrictions. |
hasUserRestriction
public boolean hasUserRestriction (String restrictionKey)
Returns whether the current user has been disallowed from performing certain actions or setting certain settings.
Parameters | |
---|---|
restrictionKey |
String : The string key representing the restriction. |
Returns | |
---|---|
boolean |
true if the current user has the given restriction, false otherwise.
|
isDemoUser
public boolean isDemoUser ()
Checks if the calling app is running in a demo user. When running in a demo user, apps can be more helpful to the user, or explain their features in more detail.
Returns | |
---|---|
boolean |
whether the caller is a demo user. |
isQuietModeEnabled
public boolean isQuietModeEnabled (UserHandle userHandle)
Returns whether the given profile is in quiet mode or not. Notes: Quiet mode is only supported for managed profiles.
Parameters | |
---|---|
userHandle |
UserHandle : The user handle of the profile to be queried. |
Returns | |
---|---|
boolean |
true if the profile is in quiet mode, false otherwise. |
isSystemUser
public boolean isSystemUser ()
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 | |
---|---|
boolean |
whether this process is running under the system user. |
isUserAGoat
public boolean isUserAGoat ()
Used to determine whether the user making this call is subject to teleportations.
As of Build.VERSION_CODES.LOLLIPOP
, this method can
now automatically identify goats using advanced goat recognition technology.
Returns | |
---|---|
boolean |
Returns true if the user making this call is a goat. |
isUserRunning
public boolean isUserRunning (UserHandle user)
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.
Note prior to Android Nougat MR1 (SDK version <= 24;
Build.VERSION_CODES.N
, this API required a system permission
in order to check other profile's status.
Since Android Nougat MR1 (SDK version >= 25;
Build.VERSION_CODES.N_MR1
), the restriction has been relaxed, and now
it'll accept any UserHandle
within the same profile group as the caller.
Parameters | |
---|---|
user |
UserHandle : The user to retrieve the running state for.
|
Returns | |
---|---|
boolean |
isUserRunningOrStopping
public boolean isUserRunningOrStopping (UserHandle user)
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).
Note prior to Android Nougat MR1 (SDK version <= 24;
Build.VERSION_CODES.N
, this API required a system permission
in order to check other profile's status.
Since Android Nougat MR1 (SDK version >= 25;
Build.VERSION_CODES.N_MR1
), the restriction has been relaxed, and now
it'll accept any UserHandle
within the same profile group as the caller.
Parameters | |
---|---|
user |
UserHandle : The user to retrieve the running state for.
|
Returns | |
---|---|
boolean |
isUserUnlocked
public boolean isUserUnlocked (UserHandle user)
Return whether the given user is running in an "unlocked" state.
On devices with direct boot, a user is unlocked only after they've entered their credentials (such as a lock pattern or PIN). On devices without direct boot, a user is unlocked as soon as it starts.
When a user is locked, only device-protected data storage is available. When a user is unlocked, both device-protected and credential-protected private app data storage is available.
Requires android.permission.MANAGE_USERS
or
android.permission.INTERACT_ACROSS_USERS
, otherwise specified user
must be the calling user or a managed profile associated with it.
Parameters | |
---|---|
user |
UserHandle : to retrieve the unlocked state for. |
Returns | |
---|---|
boolean |
isUserUnlocked
public boolean isUserUnlocked ()
Return whether the calling user is running in an "unlocked" state.
On devices with direct boot, a user is unlocked only after they've entered their credentials (such as a lock pattern or PIN). On devices without direct boot, a user is unlocked as soon as it starts.
When a user is locked, only device-protected data storage is available. When a user is unlocked, both device-protected and credential-protected private app data storage is available.
Returns | |
---|---|
boolean |
requestQuietModeEnabled
public boolean requestQuietModeEnabled (boolean enableQuietMode, UserHandle userHandle)
Enables or disables quiet mode for a managed profile. If quiet mode is enabled, apps in a managed profile don't run, generate notifications, or consume data or battery.
If a user's credential is needed to turn off quiet mode, a confirm credential screen will be shown to the user.
The change may not happen instantly, however apps can listen for
Intent.ACTION_MANAGED_PROFILE_AVAILABLE
and
Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE
broadcasts in order to be notified of
the change of the quiet mode. Apps can also check the current state of quiet mode by
calling isQuietModeEnabled(UserHandle)
.
The caller must either be the foreground default launcher or have one of these permissions:
MANAGE_USERS
or MODIFY_QUIET_MODE
.
Parameters | |
---|---|
enableQuietMode |
boolean : whether quiet mode should be enabled or disabled |
userHandle |
UserHandle : user handle of the profileThis value must never be |
Returns | |
---|---|
boolean |
false if user's credential is needed in order to turn off quiet mode,
true otherwise |
Throws | |
---|---|
SecurityException |
if the caller is invalid |
IllegalArgumentException |
if userHandle is not a managed profile |
See also:
setRestrictionsChallenge
public 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.
Sets a new challenge PIN for restrictions. This is only for use by pre-installed apps and requires the MANAGE_USERS permission.
Parameters | |
---|---|
newPin |
String : the PIN to use for challenge dialogs. |
Returns | |
---|---|
boolean |
Returns true if the challenge PIN was set successfully. |
setUserRestriction
public void setUserRestriction (String key, boolean value)
This method was deprecated
in API level 21.
use DevicePolicyManager.addUserRestriction(android.content.ComponentName, String)
or
DevicePolicyManager.clearUserRestriction(android.content.ComponentName, String)
instead.
Sets the value of a specific restriction. Requires the MANAGE_USERS permission.
Parameters | |
---|---|
key |
String : the key of the restriction |
value |
boolean : the value for the restriction |
setUserRestrictions
public void setUserRestrictions (Bundle restrictions, UserHandle userHandle)
This will no longer work. Device owners and profile owners should use
DevicePolicyManager.addUserRestriction(ComponentName, String)
instead.
Parameters | |
---|---|
restrictions |
Bundle |
userHandle |
UserHandle |
setUserRestrictions
public void setUserRestrictions (Bundle restrictions)
This will no longer work. Device owners and profile owners should use
DevicePolicyManager.addUserRestriction(ComponentName, String)
instead.
Parameters | |
---|---|
restrictions |
Bundle |
supportsMultipleUsers
public static boolean supportsMultipleUsers ()
Returns whether this device supports multiple users with their own login and customizable space.
Returns | |
---|---|
boolean |
whether the device supports multiple users. |
Interfaces
- CancellationSignal.OnCancelListener
- Handler.Callback
- IBinder
- IBinder.DeathRecipient
- IInterface
- MessageQueue.IdleHandler
- MessageQueue.OnFileDescriptorEventListener
- Parcelable
- Parcelable.ClassLoaderCreator
- Parcelable.Creator
- ParcelFileDescriptor.OnCloseListener
- RecoverySystem.ProgressListener
- StrictMode.OnThreadViolationListener
- StrictMode.OnVmViolationListener
Classes
- AsyncTask
- BaseBundle
- BatteryManager
- Binder
- Build
- Build.VERSION
- Build.VERSION_CODES
- Bundle
- CancellationSignal
- ConditionVariable
- CountDownTimer
- CpuUsageInfo
- Debug
- Debug.InstructionCount
- Debug.MemoryInfo
- DropBoxManager
- DropBoxManager.Entry
- Environment
- FileObserver
- Handler
- HandlerThread
- HardwarePropertiesManager
- LocaleList
- Looper
- MemoryFile
- Message
- MessageQueue
- Messenger
- Parcel
- ParcelFileDescriptor
- ParcelFileDescriptor.AutoCloseInputStream
- ParcelFileDescriptor.AutoCloseOutputStream
- ParcelUuid
- PatternMatcher
- PersistableBundle
- PowerManager
- PowerManager.WakeLock
- Process
- ProxyFileDescriptorCallback
- RecoverySystem
- RemoteCallbackList
- ResultReceiver
- SharedMemory
- StatFs
- StrictMode
- StrictMode.ThreadPolicy
- StrictMode.ThreadPolicy.Builder
- StrictMode.VmPolicy
- StrictMode.VmPolicy.Builder
- SystemClock
- TestLooperManager
- TokenWatcher
- Trace
- UserHandle
- UserManager
- VibrationEffect
- Vibrator
- WorkSource
Enums
Exceptions