Loading src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +5 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.settings.privatespace.PrivateSpaceSetupActivity; import com.android.settings.privatespace.delete.PrivateSpaceDeleteActivity; import com.android.settings.remoteauth.RemoteAuthActivity; import com.android.settings.remoteauth.RemoteAuthActivityInternal; import com.android.settingslib.users.CreateUserActivity; import java.util.Collection; import java.util.HashSet; Loading Loading @@ -278,6 +279,10 @@ public class ActivityEmbeddingRulesController { String action = mContext.getString(R.string.config_avatar_picker_action); addActivityFilter(activityFilters, new Intent(action)); if (android.multiuser.Flags.placeAddUserDialogWithinActivity()) { addActivityFilter(activityFilters, CreateUserActivity.class); } ActivityRule activityRule = new ActivityRule.Builder(activityFilters).setAlwaysExpand(true) .build(); mRuleController.addRule(activityRule); Loading src/com/android/settings/users/UserSettings.java +39 −8 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ package com.android.settings.users; import static com.android.settingslib.Utils.getColorAttrDefaultColor; import android.Manifest; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.Activity; import android.app.ActivityManager; import android.app.Dialog; Loading Loading @@ -83,6 +86,7 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.drawable.CircleFramedDrawable; import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.users.CreateUserActivity; import com.android.settingslib.users.CreateUserDialogController; import com.android.settingslib.users.EditUserInfoController; import com.android.settingslib.users.GrantAdminDialogController; Loading @@ -91,6 +95,7 @@ import com.android.settingslib.utils.ThreadUtils; import com.google.android.setupcompat.util.WizardManagerHelper; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; Loading Loading @@ -171,6 +176,7 @@ public class UserSettings extends SettingsPreferenceFragment private static final int REQUEST_CHOOSE_LOCK = 10; private static final int REQUEST_EDIT_GUEST = 11; private static final int REQUEST_ADD_USER = 12; static final int RESULT_GUEST_REMOVED = 100; Loading Loading @@ -234,6 +240,8 @@ public class UserSettings extends SettingsPreferenceFragment private final ExecutorService mExecutor = Executors.newSingleThreadExecutor(); private CharSequence mPendingUserName; @Nullable private String mPendingUserIconPath; private Drawable mPendingUserIcon; private boolean mPendingUserIsAdmin; Loading Loading @@ -570,6 +578,14 @@ public class UserSettings extends SettingsPreferenceFragment if (resultCode != Activity.RESULT_CANCELED && hasLockscreenSecurity()) { addUserNow(USER_TYPE_RESTRICTED_PROFILE); } } else if (Flags.placeAddUserDialogWithinActivity() && requestCode == REQUEST_ADD_USER) { if (resultCode == Activity.RESULT_OK) { mPendingUserName = data.getStringExtra(CreateUserActivity.EXTRA_USER_NAME); mPendingUserIsAdmin = data.getBooleanExtra(CreateUserActivity.EXTRA_IS_ADMIN, false); mPendingUserIconPath = data.getStringExtra(CreateUserActivity.EXTRA_USER_ICON_PATH); addUserNow(USER_TYPE_USER); } } else if (mGuestUserAutoCreated && requestCode == REQUEST_EDIT_GUEST && resultCode == RESULT_GUEST_REMOVED) { scheduleGuestCreation(); Loading Loading @@ -921,7 +937,7 @@ public class UserSettings extends SettingsPreferenceFragment getActivity(), this::startActivityForResult, canCreateAdminUser(), (userName, userIcon, isAdmin) -> { (userName, userIcon, iconPath, isAdmin) -> { mPendingUserIcon = userIcon; mPendingUserName = userName; mPendingUserIsAdmin = isAdmin; Loading Loading @@ -1040,6 +1056,8 @@ public class UserSettings extends SettingsPreferenceFragment createUser(userType, mAddingUserName); } @RequiresPermission(allOf = {Manifest.permission.MANAGE_USERS, Manifest.permission.INTERACT_ACROSS_USERS_FULL}) @VisibleForTesting void createUser(final int userType, String userName) { Context context = getContext(); Loading @@ -1065,18 +1083,25 @@ public class UserSettings extends SettingsPreferenceFragment mAddingUser = false; mPendingUserIcon = null; mPendingUserName = null; mPendingUserIconPath = null; onUserCreationFailed(); return; } Future<?> unusedSettingIconFuture = ThreadUtils.postOnBackgroundThread(() -> { if (Flags.placeAddUserDialogWithinActivity() && mPendingUserIconPath != null) { Bitmap bitmap = BitmapFactory.decodeFile(mPendingUserIconPath); mUserManager.setUserIcon(user.id, bitmap); new File(mPendingUserIconPath).delete(); mPendingUserIconPath = null; } else { Drawable newUserIcon = selectedUserIcon; if (newUserIcon == null) { newUserIcon = UserIcons.getDefaultUserIcon(resources, user.id, false); } mUserManager.setUserIcon( user.id, UserIcons.convertToBitmapAtUserIconSize( mUserManager.setUserIcon(user.id, UserIcons.convertToBitmapAtUserIconSize( resources, newUserIcon)); } }); mPendingUserIcon = null; Loading Loading @@ -1686,9 +1711,15 @@ public class UserSettings extends SettingsPreferenceFragment // flow for full user. if (mUserCaps.mCanAddRestrictedProfile) { showDialog(DIALOG_CHOOSE_USER_TYPE); } else { if (Flags.placeAddUserDialogWithinActivity()) { startActivityForResult(CreateUserActivity.createIntentForStart(getActivity(), canCreateAdminUser(), Utils.FILE_PROVIDER_AUTHORITY), REQUEST_ADD_USER); } else { onAddUserClicked(USER_TYPE_USER); } } return true; } else if (pref == mAddSupervisedUser) { mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_SUPERVISED_ADD); Loading Loading
src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +5 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.settings.privatespace.PrivateSpaceSetupActivity; import com.android.settings.privatespace.delete.PrivateSpaceDeleteActivity; import com.android.settings.remoteauth.RemoteAuthActivity; import com.android.settings.remoteauth.RemoteAuthActivityInternal; import com.android.settingslib.users.CreateUserActivity; import java.util.Collection; import java.util.HashSet; Loading Loading @@ -278,6 +279,10 @@ public class ActivityEmbeddingRulesController { String action = mContext.getString(R.string.config_avatar_picker_action); addActivityFilter(activityFilters, new Intent(action)); if (android.multiuser.Flags.placeAddUserDialogWithinActivity()) { addActivityFilter(activityFilters, CreateUserActivity.class); } ActivityRule activityRule = new ActivityRule.Builder(activityFilters).setAlwaysExpand(true) .build(); mRuleController.addRule(activityRule); Loading
src/com/android/settings/users/UserSettings.java +39 −8 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ package com.android.settings.users; import static com.android.settingslib.Utils.getColorAttrDefaultColor; import android.Manifest; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.Activity; import android.app.ActivityManager; import android.app.Dialog; Loading Loading @@ -83,6 +86,7 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.drawable.CircleFramedDrawable; import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.users.CreateUserActivity; import com.android.settingslib.users.CreateUserDialogController; import com.android.settingslib.users.EditUserInfoController; import com.android.settingslib.users.GrantAdminDialogController; Loading @@ -91,6 +95,7 @@ import com.android.settingslib.utils.ThreadUtils; import com.google.android.setupcompat.util.WizardManagerHelper; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; Loading Loading @@ -171,6 +176,7 @@ public class UserSettings extends SettingsPreferenceFragment private static final int REQUEST_CHOOSE_LOCK = 10; private static final int REQUEST_EDIT_GUEST = 11; private static final int REQUEST_ADD_USER = 12; static final int RESULT_GUEST_REMOVED = 100; Loading Loading @@ -234,6 +240,8 @@ public class UserSettings extends SettingsPreferenceFragment private final ExecutorService mExecutor = Executors.newSingleThreadExecutor(); private CharSequence mPendingUserName; @Nullable private String mPendingUserIconPath; private Drawable mPendingUserIcon; private boolean mPendingUserIsAdmin; Loading Loading @@ -570,6 +578,14 @@ public class UserSettings extends SettingsPreferenceFragment if (resultCode != Activity.RESULT_CANCELED && hasLockscreenSecurity()) { addUserNow(USER_TYPE_RESTRICTED_PROFILE); } } else if (Flags.placeAddUserDialogWithinActivity() && requestCode == REQUEST_ADD_USER) { if (resultCode == Activity.RESULT_OK) { mPendingUserName = data.getStringExtra(CreateUserActivity.EXTRA_USER_NAME); mPendingUserIsAdmin = data.getBooleanExtra(CreateUserActivity.EXTRA_IS_ADMIN, false); mPendingUserIconPath = data.getStringExtra(CreateUserActivity.EXTRA_USER_ICON_PATH); addUserNow(USER_TYPE_USER); } } else if (mGuestUserAutoCreated && requestCode == REQUEST_EDIT_GUEST && resultCode == RESULT_GUEST_REMOVED) { scheduleGuestCreation(); Loading Loading @@ -921,7 +937,7 @@ public class UserSettings extends SettingsPreferenceFragment getActivity(), this::startActivityForResult, canCreateAdminUser(), (userName, userIcon, isAdmin) -> { (userName, userIcon, iconPath, isAdmin) -> { mPendingUserIcon = userIcon; mPendingUserName = userName; mPendingUserIsAdmin = isAdmin; Loading Loading @@ -1040,6 +1056,8 @@ public class UserSettings extends SettingsPreferenceFragment createUser(userType, mAddingUserName); } @RequiresPermission(allOf = {Manifest.permission.MANAGE_USERS, Manifest.permission.INTERACT_ACROSS_USERS_FULL}) @VisibleForTesting void createUser(final int userType, String userName) { Context context = getContext(); Loading @@ -1065,18 +1083,25 @@ public class UserSettings extends SettingsPreferenceFragment mAddingUser = false; mPendingUserIcon = null; mPendingUserName = null; mPendingUserIconPath = null; onUserCreationFailed(); return; } Future<?> unusedSettingIconFuture = ThreadUtils.postOnBackgroundThread(() -> { if (Flags.placeAddUserDialogWithinActivity() && mPendingUserIconPath != null) { Bitmap bitmap = BitmapFactory.decodeFile(mPendingUserIconPath); mUserManager.setUserIcon(user.id, bitmap); new File(mPendingUserIconPath).delete(); mPendingUserIconPath = null; } else { Drawable newUserIcon = selectedUserIcon; if (newUserIcon == null) { newUserIcon = UserIcons.getDefaultUserIcon(resources, user.id, false); } mUserManager.setUserIcon( user.id, UserIcons.convertToBitmapAtUserIconSize( mUserManager.setUserIcon(user.id, UserIcons.convertToBitmapAtUserIconSize( resources, newUserIcon)); } }); mPendingUserIcon = null; Loading Loading @@ -1686,9 +1711,15 @@ public class UserSettings extends SettingsPreferenceFragment // flow for full user. if (mUserCaps.mCanAddRestrictedProfile) { showDialog(DIALOG_CHOOSE_USER_TYPE); } else { if (Flags.placeAddUserDialogWithinActivity()) { startActivityForResult(CreateUserActivity.createIntentForStart(getActivity(), canCreateAdminUser(), Utils.FILE_PROVIDER_AUTHORITY), REQUEST_ADD_USER); } else { onAddUserClicked(USER_TYPE_USER); } } return true; } else if (pref == mAddSupervisedUser) { mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_SUPERVISED_ADD); Loading