diff --git a/core/java/com/android/internal/inputmethod/InputMethodDebug.java b/core/java/com/android/internal/inputmethod/InputMethodDebug.java index a00b993749a52..bf094dbd8f1e7 100644 --- a/core/java/com/android/internal/inputmethod/InputMethodDebug.java +++ b/core/java/com/android/internal/inputmethod/InputMethodDebug.java @@ -236,6 +236,8 @@ public final class InputMethodDebug { return "HIDE_TOGGLE_SOFT_INPUT"; case SoftInputShowHideReason.SHOW_SOFT_INPUT_BY_INSETS_API: return "SHOW_SOFT_INPUT_BY_INSETS_API"; + case SoftInputShowHideReason.HIDE_DISPLAY_IME_POLICY_HIDE: + return "HIDE_DISPLAY_IME_POLICY_HIDE"; default: return "Unknown=" + reason; } diff --git a/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java b/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java index e3713a3b89719..9e5776292031c 100644 --- a/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java +++ b/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java @@ -19,6 +19,7 @@ package com.android.internal.inputmethod; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; +import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import java.lang.annotation.Retention; @@ -53,7 +54,8 @@ import java.lang.annotation.Retention; SoftInputShowHideReason.SHOW_RESTORE_IME_VISIBILITY, SoftInputShowHideReason.SHOW_TOGGLE_SOFT_INPUT, SoftInputShowHideReason.HIDE_TOGGLE_SOFT_INPUT, - SoftInputShowHideReason.SHOW_SOFT_INPUT_BY_INSETS_API}) + SoftInputShowHideReason.SHOW_SOFT_INPUT_BY_INSETS_API, + SoftInputShowHideReason.HIDE_DISPLAY_IME_POLICY_HIDE}) public @interface SoftInputShowHideReason { /** Show soft input by {@link android.view.inputmethod.InputMethodManager#showSoftInput}. */ int SHOW_SOFT_INPUT = 0; @@ -195,4 +197,10 @@ public @interface SoftInputShowHideReason { * {@link android.view.InsetsController#show(int)}; */ int SHOW_SOFT_INPUT_BY_INSETS_API = 25; + + /** + * Hide soft input if Ime policy has been set to {@link WindowManager#DISPLAY_IME_POLICY_HIDE}. + * See also {@code InputMethodManagerService#mImeHiddenByDisplayPolicy}. + */ + int HIDE_DISPLAY_IME_POLICY_HIDE = 26; } diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 075b74d5bbdca..b1ac4d00c5804 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -2354,6 +2354,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (displayIdToShowIme == INVALID_DISPLAY) { mImeHiddenByDisplayPolicy = true; + hideCurrentInputLocked(mCurFocusedWindow, 0, null, + SoftInputShowHideReason.HIDE_DISPLAY_IME_POLICY_HIDE); return InputBindResult.NO_IME; } mImeHiddenByDisplayPolicy = false;