From 116628ff87a7399a34c744128e2ac125de98ea63 Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Fri, 24 Jun 2022 11:16:47 -0700 Subject: [PATCH] [User Switcher] Ensure unlocked when launching Ensure keyguard is unlocked when launching the Avatarpicker. There are multiple user journeys here, but they all seem to work fine. Test: Manual on device Bug: 234071952 Change-Id: I531cb4d2a500c60f7eaaea7c0b45ae6bb5436162 --- .../systemui/user/CreateUserActivity.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java b/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java index cc6bf6a70d4e2..f01712653e1b0 100644 --- a/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java +++ b/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java @@ -31,6 +31,7 @@ import androidx.annotation.Nullable; import com.android.settingslib.users.EditUserInfoController; import com.android.systemui.R; +import com.android.systemui.plugins.ActivityStarter; import javax.inject.Inject; @@ -55,15 +56,18 @@ public class CreateUserActivity extends Activity { private final UserCreator mUserCreator; private final EditUserInfoController mEditUserInfoController; private final IActivityManager mActivityManager; + private final ActivityStarter mActivityStarter; private Dialog mSetupUserDialog; @Inject public CreateUserActivity(UserCreator userCreator, - EditUserInfoController editUserInfoController, IActivityManager activityManager) { + EditUserInfoController editUserInfoController, IActivityManager activityManager, + ActivityStarter activityStarter) { mUserCreator = userCreator; mEditUserInfoController = editUserInfoController; mActivityManager = activityManager; + mActivityStarter = activityStarter; } @Override @@ -104,10 +108,7 @@ public class CreateUserActivity extends Activity { return mEditUserInfoController.createDialog( this, - (intent, requestCode) -> { - mEditUserInfoController.startingActivityForResult(); - startActivityForResult(intent, requestCode); - }, + this::startActivity, null, defaultUserName, getString(com.android.settingslib.R.string.user_add_user), @@ -160,4 +161,17 @@ public class CreateUserActivity extends Activity { Log.e(TAG, "Couldn't switch user.", e); } } + + /** + * Lambda to start activity from an intent. Ensures that device is unlocked first. + * @param intent + * @param requestCode + */ + private void startActivity(Intent intent, int requestCode) { + mActivityStarter.dismissKeyguardThenExecute(() -> { + mEditUserInfoController.startingActivityForResult(); + startActivityForResult(intent, requestCode); + return true; + }, /* cancel= */ null, /* afterKeyguardGone= */ true); + } }