Add a setter of InputMethodSubtype to InputMethodManager
- Public API: void setCurrentInputMethodSubtype(int pos)
Change-Id: I55daa19ba924999def544bf841f00bf54852f3e1
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 7c1c992..4f8862c 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -988,8 +988,9 @@
}
if (id.equals(mCurMethodId)) {
- if (subtypeId != NOT_A_SUBTYPE_ID) {
- InputMethodSubtype subtype = info.getSubtypes().get(subtypeId);
+ ArrayList<InputMethodSubtype> subtypes = info.getSubtypes();
+ if (subtypeId >= 0 && subtypeId < subtypes.size()) {
+ InputMethodSubtype subtype = subtypes.get(subtypeId);
if (subtype != mCurrentSubtype) {
synchronized (mMethodMap) {
if (mCurMethod != null) {
@@ -1964,6 +1965,20 @@
return mCurrentSubtype;
}
+ public boolean setCurrentInputMethodSubtype(InputMethodSubtype subtype) {
+ synchronized (mMethodMap) {
+ if (subtype != null && mCurMethodId != null) {
+ InputMethodInfo imi = mMethodMap.get(mCurMethodId);
+ int subtypeId = getSubtypeIdFromHashCode(imi, subtype.hashCode());
+ if (subtypeId != NOT_A_SUBTYPE_ID) {
+ setInputMethodLocked(mCurMethodId, subtypeId);
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
/**
* Utility class for putting and getting settings for InputMethod
* TODO: Move all putters and getters of settings to this class.