@Override public UserInfo createUser(String name, int flags) { checkManageUsersPermission("Only the system can create users"); final long ident = Binder.clearCallingIdentity(); final UserInfo userInfo; try { synchronized (mInstallLock) { synchronized (mPackagesLock) { if (isUserLimitReachedLocked()) return null; int userId = getNextAvailableIdLocked(); userInfo = new UserInfo(userId, name, null, flags); File userPath = new File(mBaseUserPath, Integer.toString(userId)); userInfo.serialNumber = mNextSerialNumber++; long now = System.currentTimeMillis(); userInfo.creationTime = (now > EPOCH_PLUS_30_YEARS) ? now : 0; userInfo.partial = true; Environment.getUserSystemDirectory(userInfo.id).mkdirs(); mUsers.put(userId, userInfo); writeUserListLocked(); writeUserLocked(userInfo); mPm.createNewUserLILPw(userId, userPath); userInfo.partial = false; writeUserLocked(userInfo); updateUserIdsLocked(); } } if (userInfo != null) { Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED); addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userInfo.id); mContext.sendBroadcastAsUser( addedIntent, UserHandle.ALL, android.Manifest.permission.MANAGE_USERS); } } finally { Binder.restoreCallingIdentity(ident); } return userInfo; }