diff options
| -rw-r--r-- | services/core/java/com/android/server/inputmethod/InputMethodManagerService.java | 30 | ||||
| -rw-r--r-- | services/core/java/com/android/server/inputmethod/InputMethodSettings.java | 7 |
2 files changed, 29 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 0f2af313b6ab..2ea662c40e0b 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -3185,6 +3185,24 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub } } } + + if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) { + String ime = SecureSettingsWrapper.getString( + Settings.Secure.DEFAULT_INPUT_METHOD, null, mSettings.getUserId()); + String defaultDeviceIme = SecureSettingsWrapper.getString( + Settings.Secure.DEFAULT_DEVICE_INPUT_METHOD, null, mSettings.getUserId()); + if (defaultDeviceIme != null && !Objects.equals(ime, defaultDeviceIme)) { + if (DEBUG) { + Slog.v(TAG, "Current input method " + ime + " differs from the stored default" + + " device input method for user " + mSettings.getUserId() + + " - restoring " + defaultDeviceIme); + } + SecureSettingsWrapper.putString( + Settings.Secure.DEFAULT_INPUT_METHOD, defaultDeviceIme, + mSettings.getUserId()); + } + } + // We are assuming that whoever is changing DEFAULT_INPUT_METHOD and // ENABLED_INPUT_METHODS is taking care of keeping them correctly in // sync, so we will never have a DEFAULT_INPUT_METHOD that is not @@ -5366,7 +5384,11 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub if (!setSubtypeOnly) { // Set InputMethod here - mSettings.putSelectedInputMethod(imi != null ? imi.getId() : ""); + final String imeId = imi != null ? imi.getId() : ""; + mSettings.putSelectedInputMethod(imeId); + if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) { + mSettings.putSelectedDefaultDeviceInputMethod(imeId); + } } } @@ -5509,6 +5531,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub return false; // IME is not found or not enabled. } settings.putSelectedInputMethod(imeId); + if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) { + settings.putSelectedDefaultDeviceInputMethod(imeId); + } settings.putSelectedSubtype(NOT_A_SUBTYPE_ID); return true; } @@ -6555,6 +6580,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub // Reset selected IME. settings.putSelectedInputMethod(nextIme); + if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) { + settings.putSelectedDefaultDeviceInputMethod(nextIme); + } settings.putSelectedSubtype(NOT_A_SUBTYPE_ID); } out.println("Reset current and enabled IMEs for user #" + userId); diff --git a/services/core/java/com/android/server/inputmethod/InputMethodSettings.java b/services/core/java/com/android/server/inputmethod/InputMethodSettings.java index a51002be344f..e444db1b79e8 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodSettings.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodSettings.java @@ -36,7 +36,6 @@ import com.android.internal.annotations.VisibleForTesting; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.function.Predicate; /** @@ -88,12 +87,6 @@ final class InputMethodSettings { mMethodMap = methodMap; mMethodList = methodMap.values(); mUserId = userId; - String ime = getSelectedInputMethod(); - String defaultDeviceIme = getSelectedDefaultDeviceInputMethod(); - if (defaultDeviceIme != null && !Objects.equals(ime, defaultDeviceIme)) { - putSelectedInputMethod(defaultDeviceIme); - putSelectedDefaultDeviceInputMethod(null); - } } @AnyThread |