Merge "Request hiding IME before starting next activity transition"
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index c4a3159..265cee8 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -954,6 +954,9 @@
return;
}
+ ConfirmDeviceCredentialUtils.hideImeImmediately(
+ getActivity().getWindow().getDecorView());
+
mPasswordEntryInputDisabler.setInputEnabled(false);
setNextEnabled(false);
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialUtils.java b/src/com/android/settings/password/ConfirmDeviceCredentialUtils.java
index a5febeb..26c877f 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialUtils.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialUtils.java
@@ -25,6 +25,11 @@
import android.content.IntentSender;
import android.os.RemoteException;
import android.os.UserManager;
+import android.view.View;
+import android.view.WindowInsets;
+import android.view.WindowInsetsController;
+
+import androidx.annotation.NonNull;
import com.android.internal.widget.LockPatternUtils;
@@ -67,4 +72,16 @@
utils.userPresent(userId);
}
}
+
+ /**
+ * Request hiding soft-keyboard before animating away credential UI, in case IME
+ * insets animation get delayed by dismissing animation.
+ * @param view used to get root {@link WindowInsets} and {@link WindowInsetsController}.
+ */
+ public static void hideImeImmediately(@NonNull View view) {
+ if (view.isAttachedToWindow()
+ && view.getRootWindowInsets().isVisible(WindowInsets.Type.ime())) {
+ view.getWindowInsetsController().hide(WindowInsets.Type.ime());
+ }
+ }
}
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index a81f975..48c9aa8 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -493,6 +493,9 @@
}
private void startDisappearAnimation(final Intent intent) {
+ ConfirmDeviceCredentialUtils.hideImeImmediately(
+ getActivity().getWindow().getDecorView());
+
if (mDisappearing) {
return;
}
diff --git a/src/com/android/settings/password/SetupChooseLockPassword.java b/src/com/android/settings/password/SetupChooseLockPassword.java
index cca50e0..5306719 100644
--- a/src/com/android/settings/password/SetupChooseLockPassword.java
+++ b/src/com/android/settings/password/SetupChooseLockPassword.java
@@ -22,7 +22,6 @@
import android.os.Bundle;
import android.util.Log;
import android.view.View;
-import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import androidx.annotation.Nullable;
@@ -121,9 +120,8 @@
forFace,
forBiometrics);
- InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
- Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
+ ConfirmDeviceCredentialUtils.hideImeImmediately(
+ getActivity().getWindow().getDecorView());
dialog.show(getFragmentManager());
return;