Package org.robolectric.shadows
Class ShadowUserManager
- java.lang.Object
-
- org.robolectric.shadows.ShadowUserManager
-
@Implements(value=android.os.UserManager.class, minSdk=17) public class ShadowUserManager extends java.lang.ObjectRobolectric implementation ofUserManager.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classShadowUserManager.UserStateDescribes the current state of the user.
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_SECONDARY_USER_IDThe default user ID user for secondary user testing, when the ID is not otherwise specified.static intFLAG_ADMINstatic intFLAG_DEMOstatic intFLAG_GUESTstatic intFLAG_MANAGED_PROFILEstatic intFLAG_PRIMARYstatic intFLAG_RESTRICTEDprotected java.util.Map<java.lang.Integer,android.content.pm.UserInfo>userInfoMapHolds the UserInfo for all registered users and profiles, indexed by UserHandle.idprotected static java.util.Map<java.lang.Integer,java.lang.Integer>userPidMapprotected java.util.Map<java.lang.Integer,java.util.List<android.os.UserHandle>>userProfilesListMapEach user holds a list of UserHandles of assocated profiles and user itself.protected com.google.common.collect.BiMap<java.lang.Integer,java.lang.Long>userSerialNumbersHolds the serial numbers for all users and profiles, indexed by UserHandle.idprotected java.util.Map<java.lang.Integer,ShadowUserManager.UserState>userStateHolds all UserStates, indexed by UserHandle.id
-
Constructor Summary
Constructors Constructor Description ShadowUserManager()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void__constructor__(android.content.Context context, android.os.IUserManager service)voidaddProfile(int userHandle, int profileUserHandle, java.lang.String profileName, int profileFlags)Add a profile to be returned bygetProfiles(int).android.os.UserHandleaddUser(int id, java.lang.String name, int flags)Creates a user with the specified name, userId and flags.longaddUserProfile(android.os.UserHandle userHandle)Deprecated.use either addUser() or addProfile()protected booleancanSwitchUsers()Returnstrueby default, or the value specified viasetCanSwitchUser(boolean).voidclearUserRestrictions(android.os.UserHandle userHandle)Removes all user restrictions set of a user identified byuserHandle.voidenforcePermissionChecks(boolean enforcePermissions)protected android.os.BundlegetApplicationRestrictions(java.lang.String packageName)Compared to real Android, there is no check that the package name matches the application package name and the method returns instantly.protected android.content.pm.UserInfogetProfileParent(int userId)protected java.util.List<android.content.pm.UserInfo>getProfiles(int userHandle)If any profiles have been added usingaddProfile(int, int, java.lang.String, int), return those profiles.protected java.lang.StringgetSeedAccountType()protected longgetSerialNumberForUser(android.os.UserHandle userHandle)protected android.os.UserHandlegetUserForSerialNumber(long serialNumber)protected intgetUserHandle(int serialNumber)protected android.content.pm.UserInfogetUserInfo(int userHandle)protected java.lang.StringgetUserName()Returns the name of the user.protected java.util.List<android.os.UserHandle>getUserProfiles()protected android.os.BundlegetUserRestrictions(android.os.UserHandle userHandle)protected java.util.List<android.content.pm.UserInfo>getUsers()protected intgetUserSerialNumber(int userHandle)protected intgetUserSwitchability()protected booleanhasUserRestriction(java.lang.String restrictionKey, android.os.UserHandle userHandle)protected booleanisDemoUser()protected booleanisLinkedUser()protected booleanisManagedProfile()If permissions are enforced (seeenforcePermissionChecks(boolean)) and the application doesn't have theManifest.permission.MANAGE_USERSpermission, throws aSecurityManagerexception.protected booleanisManagedProfile(int userHandle)If permissions are enforced (seeenforcePermissionChecks(boolean)) and the application doesn't have theManifest.permission.MANAGE_USERSpermission, throws aSecurityManagerexception.protected booleanisQuietModeEnabled(android.os.UserHandle userHandle)Query whether the quiet mode is enabled for a managed profile.protected booleanisRestrictedProfile()Returns 'false' by default, or the value specified viasetIsRestrictedProfile(boolean).protected booleanisSystemUser()protected booleanisUserRunning(android.os.UserHandle handle)protected booleanisUserRunningOrStopping(android.os.UserHandle handle)protected booleanisUserUnlocked()protected booleanisUserUnlocked(android.os.UserHandle handle)protected booleanremoveUser(int userHandle)protected booleanremoveUser(android.os.UserHandle user)protected booleanrequestQuietModeEnabled(boolean enableQuietMode, android.os.UserHandle userHandle)Request the quiet mode.static voidreset()protected voidsendQuietModeBroadcast(java.lang.String action, android.os.UserHandle profileHandle)If the current application has the necessary rights, it will receive the background action too.voidsetApplicationRestrictions(java.lang.String packageName, android.os.Bundle restrictions)Sets the value returned byUserManager.getApplicationRestrictions(String).voidsetCanSwitchUser(boolean canSwitchUser)Deprecated.usesetUserSwitchability(int)insteadvoidsetIsDemoUser(boolean isDemoUser)Deprecated.UseaddUser(int, String, int)to create a demo user instead of changing default user flags.voidsetIsGuestUser(boolean isGuestUser)Deprecated.UseaddUser(int, String, int)to create a guest user instead of changing default user flags.voidsetIsLinkedUser(boolean isLinkedUser)Deprecated.UseaddUser(int, String, int)to create a linked user instead of changing default user flags.voidsetIsPrimaryUser(boolean isPrimaryUser)Deprecated.UseaddUser(int, String, int)to create a primary user instead of changing default user flags.voidsetIsRestrictedProfile(boolean isRestrictedProfile)Sets this process running under a restricted profile; controls the return value ofUserManager.isRestrictedProfile().voidsetIsSystemUser(boolean isSystemUser)Deprecated.UseaddUser(int, String, int)to create a system user instead of changing default user flags.voidsetManagedProfile(boolean managedProfile)Setter forUserManager.isManagedProfile().voidsetProfileIsLocked(android.os.UserHandle profileHandle, boolean isLocked)voidsetSeedAccountType(java.lang.String seedAccountType)Setter forUserManager.getSeedAccountType()voidsetSerialNumberForUser(android.os.UserHandle userHandle, long serialNumber)addUser(int, java.lang.String, int)uses UserHandle for serialNumber.voidsetSupportsMultipleUsers(boolean isMultiUserSupported)Sets whether multiple users are supported; controls the return value ofUserManager#supportsMultipleUser.voidsetUserRestriction(android.os.UserHandle userHandle, java.lang.String restrictionKey, boolean value)voidsetUserState(android.os.UserHandle handle, ShadowUserManager.UserState state)Sets the current state for a given user, seeUserManager.isUserRunning(UserHandle)andUserManager.isUserRunningOrStopping(UserHandle)voidsetUserSwitchability(int switchability)Sets the user switchability for all users.voidsetUserUnlocked(boolean userUnlocked)Setter forUserManager.isUserUnlocked()protected static booleansupportsMultipleUsers()voidswitchUser(int userId)Switches the current user touserHandle.
-
-
-
Field Detail
-
DEFAULT_SECONDARY_USER_ID
public static final int DEFAULT_SECONDARY_USER_ID
The default user ID user for secondary user testing, when the ID is not otherwise specified.- See Also:
- Constant Field Values
-
FLAG_PRIMARY
public static final int FLAG_PRIMARY
- See Also:
- Constant Field Values
-
FLAG_ADMIN
public static final int FLAG_ADMIN
- See Also:
- Constant Field Values
-
FLAG_GUEST
public static final int FLAG_GUEST
- See Also:
- Constant Field Values
-
FLAG_RESTRICTED
public static final int FLAG_RESTRICTED
- See Also:
- Constant Field Values
-
FLAG_DEMO
public static final int FLAG_DEMO
- See Also:
- Constant Field Values
-
FLAG_MANAGED_PROFILE
public static final int FLAG_MANAGED_PROFILE
- See Also:
- Constant Field Values
-
userPidMap
protected static java.util.Map<java.lang.Integer,java.lang.Integer> userPidMap
-
userSerialNumbers
protected com.google.common.collect.BiMap<java.lang.Integer,java.lang.Long> userSerialNumbers
Holds the serial numbers for all users and profiles, indexed by UserHandle.id
-
userState
protected java.util.Map<java.lang.Integer,ShadowUserManager.UserState> userState
Holds all UserStates, indexed by UserHandle.id
-
userInfoMap
protected java.util.Map<java.lang.Integer,android.content.pm.UserInfo> userInfoMap
Holds the UserInfo for all registered users and profiles, indexed by UserHandle.id
-
userProfilesListMap
protected java.util.Map<java.lang.Integer,java.util.List<android.os.UserHandle>> userProfilesListMap
Each user holds a list of UserHandles of assocated profiles and user itself. User is indexed by UserHandle.id. See UserManager.getProfiles(userId).
-
-
Method Detail
-
__constructor__
@Implementation protected void __constructor__(android.content.Context context, android.os.IUserManager service)
-
getApplicationRestrictions
@Implementation(minSdk=18) protected android.os.Bundle getApplicationRestrictions(java.lang.String packageName)
Compared to real Android, there is no check that the package name matches the application package name and the method returns instantly.
-
setApplicationRestrictions
public void setApplicationRestrictions(java.lang.String packageName, android.os.Bundle restrictions)Sets the value returned byUserManager.getApplicationRestrictions(String).
-
addUserProfile
@Deprecated public long addUserProfile(android.os.UserHandle userHandle)
Deprecated.use either addUser() or addProfile()Adds a profile associated for the user that the calling process is running on.The user is assigned an arbitrary unique serial number.
- Returns:
- the user's serial number
-
getUserProfiles
@Implementation(minSdk=21) protected java.util.List<android.os.UserHandle> getUserProfiles()
-
getProfiles
@Implementation(minSdk=21) protected java.util.List<android.content.pm.UserInfo> getProfiles(int userHandle)
If any profiles have been added usingaddProfile(int, int, java.lang.String, int), return those profiles. Otherwise follow real android behaviour.
-
getProfileParent
@Implementation(minSdk=21) protected android.content.pm.UserInfo getProfileParent(int userId)
-
addProfile
public void addProfile(int userHandle, int profileUserHandle, java.lang.String profileName, int profileFlags)Add a profile to be returned bygetProfiles(int).
-
setUserUnlocked
public void setUserUnlocked(boolean userUnlocked)
Setter forUserManager.isUserUnlocked()
-
isUserUnlocked
@Implementation(minSdk=24) protected boolean isUserUnlocked()
-
isUserUnlocked
@Implementation(minSdk=24) protected boolean isUserUnlocked(android.os.UserHandle handle)
- See Also:
setUserState(UserHandle, UserState)
-
isManagedProfile
@Implementation(minSdk=21) protected boolean isManagedProfile()
If permissions are enforced (seeenforcePermissionChecks(boolean)) and the application doesn't have theManifest.permission.MANAGE_USERSpermission, throws aSecurityManagerexception.- Returns:
- false by default, or the value specified via
setManagedProfile(boolean) - See Also:
enforcePermissionChecks(boolean),setManagedProfile(boolean)
-
isManagedProfile
@Implementation(minSdk=24) protected boolean isManagedProfile(int userHandle)
If permissions are enforced (seeenforcePermissionChecks(boolean)) and the application doesn't have theManifest.permission.MANAGE_USERSpermission, throws aSecurityManagerexception.- Returns:
- true if the profile added has FLAG_MANAGED_PROFILE
- See Also:
enforcePermissionChecks(boolean),addProfile(int, int, String, int),addUser(int, String, int)
-
enforcePermissionChecks
public void enforcePermissionChecks(boolean enforcePermissions)
-
setManagedProfile
public void setManagedProfile(boolean managedProfile)
Setter forUserManager.isManagedProfile().
-
hasUserRestriction
@Implementation(minSdk=21) protected boolean hasUserRestriction(java.lang.String restrictionKey, android.os.UserHandle userHandle)
-
setUserRestriction
public void setUserRestriction(android.os.UserHandle userHandle, java.lang.String restrictionKey, boolean value)
-
clearUserRestrictions
public void clearUserRestrictions(android.os.UserHandle userHandle)
Removes all user restrictions set of a user identified byuserHandle.
-
getUserRestrictions
@Implementation(minSdk=18) protected android.os.Bundle getUserRestrictions(android.os.UserHandle userHandle)
-
getSerialNumberForUser
@Implementation protected long getSerialNumberForUser(android.os.UserHandle userHandle)
-
setSerialNumberForUser
public void setSerialNumberForUser(android.os.UserHandle userHandle, long serialNumber)addUser(int, java.lang.String, int)uses UserHandle for serialNumber. setSerialNumberForUser() allows assigning an arbitary serialNumber. Some test use serialNumber!=0 as secondary user check, so it's necessary to "fake" the serialNumber to a non-zero value.
-
getUserForSerialNumber
@Implementation protected android.os.UserHandle getUserForSerialNumber(long serialNumber)
-
getUserSerialNumber
@Implementation protected int getUserSerialNumber(int userHandle)
-
getUserName
@Implementation(minSdk=29) protected java.lang.String getUserName()
Returns the name of the user. On real Android, if a UserHandle.USER_SYSTEM user is found but does not have a name, it will return a name like "Owner". In Robolectric, the USER_SYSTEM user always has a name.
-
getUserHandle
@HiddenApi @Implementation(minSdk=17) protected int getUserHandle(int serialNumber)
- Returns:
- user id for given user serial number.
-
isDemoUser
@Implementation(minSdk=25) protected boolean isDemoUser()
- Returns:
- false by default, or the value specified via
setIsDemoUser(boolean)
-
setIsDemoUser
@Deprecated public void setIsDemoUser(boolean isDemoUser)
Deprecated.UseaddUser(int, String, int)to create a demo user instead of changing default user flags.Sets that the current user is a demo user; controls the return value ofUserManager.isDemoUser().
-
isSystemUser
@Implementation(minSdk=23) protected boolean isSystemUser()
- Returns:
- 'true' by default, or the value specified via
setIsSystemUser(boolean)
-
setIsSystemUser
@Deprecated public void setIsSystemUser(boolean isSystemUser)
Deprecated.UseaddUser(int, String, int)to create a system user instead of changing default user flags.Sets that the current user is the system user; controls the return value ofUserManager.isSystemUser().
-
setIsPrimaryUser
@Deprecated public void setIsPrimaryUser(boolean isPrimaryUser)
Deprecated.UseaddUser(int, String, int)to create a primary user instead of changing default user flags.Sets that the current user is the primary user; controls the return value ofUserManager.isPrimaryUser().
-
isLinkedUser
@Implementation(minSdk=18) protected boolean isLinkedUser()
- Returns:
- 'false' by default, or the value specified via
setIsLinkedUser(boolean)
-
setIsLinkedUser
@Deprecated public void setIsLinkedUser(boolean isLinkedUser)
Deprecated.UseaddUser(int, String, int)to create a linked user instead of changing default user flags.Sets that the current user is the linked user; controls the return value ofUserManager.isLinkedUser().
-
isRestrictedProfile
@Implementation(minSdk=28) protected boolean isRestrictedProfile()
Returns 'false' by default, or the value specified viasetIsRestrictedProfile(boolean).
-
setIsRestrictedProfile
public void setIsRestrictedProfile(boolean isRestrictedProfile)
Sets this process running under a restricted profile; controls the return value ofUserManager.isRestrictedProfile().
-
setIsGuestUser
@Deprecated public void setIsGuestUser(boolean isGuestUser)
Deprecated.UseaddUser(int, String, int)to create a guest user instead of changing default user flags.Sets that the current user is the guest user; controls the return value ofUserManager.isGuestUser().
-
isUserRunning
@Implementation protected boolean isUserRunning(android.os.UserHandle handle)
- See Also:
setUserState(UserHandle, UserState)
-
isUserRunningOrStopping
@Implementation protected boolean isUserRunningOrStopping(android.os.UserHandle handle)
- See Also:
setUserState(UserHandle, UserState)
-
setUserState
public void setUserState(android.os.UserHandle handle, ShadowUserManager.UserState state)Sets the current state for a given user, seeUserManager.isUserRunning(UserHandle)andUserManager.isUserRunningOrStopping(UserHandle)
-
isQuietModeEnabled
@Implementation(minSdk=26) protected boolean isQuietModeEnabled(android.os.UserHandle userHandle)
Query whether the quiet mode is enabled for a managed profile.This method checks whether the user handle corresponds to a managed profile, and then query its state. When quiet, the user is not running.
-
requestQuietModeEnabled
@Implementation(minSdk=29) protected boolean requestQuietModeEnabled(boolean enableQuietMode, android.os.UserHandle userHandle)Request the quiet mode. This will succeed unlesssetProfileIsLocked(UserHandle, boolean)is called withtruefor the managed profile, in which case it will always fail.
-
sendQuietModeBroadcast
protected void sendQuietModeBroadcast(java.lang.String action, android.os.UserHandle profileHandle)If the current application has the necessary rights, it will receive the background action too.
-
setProfileIsLocked
public void setProfileIsLocked(android.os.UserHandle profileHandle, boolean isLocked)
-
getUsers
@Implementation protected java.util.List<android.content.pm.UserInfo> getUsers()
-
getUserInfo
@Implementation protected android.content.pm.UserInfo getUserInfo(int userHandle)
-
setCanSwitchUser
@Deprecated public void setCanSwitchUser(boolean canSwitchUser)
Deprecated.usesetUserSwitchability(int)insteadSets whether switching users is allowed or not; controls the return value ofUserManager#canSwitchUser()
-
getSeedAccountType
@Implementation(minSdk=29) protected java.lang.String getSeedAccountType()
-
setSeedAccountType
public void setSeedAccountType(java.lang.String seedAccountType)
Setter forUserManager.getSeedAccountType()
-
removeUser
@Implementation(minSdk=17) protected boolean removeUser(int userHandle)
-
removeUser
@Implementation(minSdk=29) protected boolean removeUser(android.os.UserHandle user)
-
supportsMultipleUsers
@Implementation(minSdk=24) protected static boolean supportsMultipleUsers()
-
setSupportsMultipleUsers
public void setSupportsMultipleUsers(boolean isMultiUserSupported)
Sets whether multiple users are supported; controls the return value ofUserManager#supportsMultipleUser.
-
switchUser
public void switchUser(int userId)
Switches the current user touserHandle.- Parameters:
userId- the integer handle of the user, where 0 is the primary user.
-
addUser
public android.os.UserHandle addUser(int id, java.lang.String name, int flags)Creates a user with the specified name, userId and flags.- Parameters:
id- the unique id of username- name of the userflags- 16 bits for user type. SeeUserInfo.flags- Returns:
- a handle to the new user
-
canSwitchUsers
@Implementation(minSdk=24, maxSdk=29) protected boolean canSwitchUsers()Returnstrueby default, or the value specified viasetCanSwitchUser(boolean).
-
getUserSwitchability
@Implementation(minSdk=29) protected int getUserSwitchability()
-
setUserSwitchability
public void setUserSwitchability(int switchability)
Sets the user switchability for all users.
-
reset
@Resetter public static void reset()
-
-