diff options
5 files changed, 31 insertions, 31 deletions
diff --git a/api/current.xml b/api/current.xml index 263648d..d7382eb 100644 --- a/api/current.xml +++ b/api/current.xml @@ -219190,8 +219190,8 @@ visibility="public" > </method> -<method name="getModeResId" - return="int" +<method name="getMode" + return="java.lang.String" abstract="false" native="false" synchronized="false" @@ -245869,7 +245869,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="t" type="T"> +<parameter name="arg0" type="T"> </parameter> </method> </interface> diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index a1f2b63..8409baa 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -2086,10 +2086,10 @@ public class InputMethodService extends AbstractInputMethodService { protected void onCurrentInputMethodSubtypeChanged(InputMethodSubtype newSubtype) { if (DEBUG) { int nameResId = newSubtype.getNameResId(); - int modeResId = newSubtype.getModeResId(); + String mode = newSubtype.getMode(); String output = "changeInputMethodSubtype:" + (nameResId == 0 ? "<none>" : getString(nameResId)) + "," - + (modeResId == 0 ? "<none>" : getString(modeResId)) + "," + + mode + "," + newSubtype.getLocale() + "," + newSubtype.getExtraValue(); Log.v(TAG, "--- " + output); } diff --git a/core/java/android/view/inputmethod/InputMethodInfo.java b/core/java/android/view/inputmethod/InputMethodInfo.java index 54102f6..defd104 100644 --- a/core/java/android/view/inputmethod/InputMethodInfo.java +++ b/core/java/android/view/inputmethod/InputMethodInfo.java @@ -142,8 +142,8 @@ public final class InputMethodInfo implements Parcelable { .InputMethod_Subtype_icon, 0), a.getString(com.android.internal.R.styleable .InputMethod_Subtype_imeSubtypeLocale), - a.getResourceId(com.android.internal.R.styleable - .InputMethod_Subtype_imeSubtypeMode, 0), + a.getString(com.android.internal.R.styleable + .InputMethod_Subtype_imeSubtypeMode), a.getString(com.android.internal.R.styleable .InputMethod_Subtype_imeSubtypeExtraValue)); mSubtypes.add(subtype); diff --git a/core/java/android/view/inputmethod/InputMethodSubtype.java b/core/java/android/view/inputmethod/InputMethodSubtype.java index a1ed044..0925940 100644 --- a/core/java/android/view/inputmethod/InputMethodSubtype.java +++ b/core/java/android/view/inputmethod/InputMethodSubtype.java @@ -34,7 +34,7 @@ public final class InputMethodSubtype implements Parcelable { private final int mSubtypeNameResId; private final int mSubtypeIconResId; private final String mSubtypeLocale; - private final int mSubtypeModeResId; + private final String mSubtypeMode; private final String mSubtypeExtraValue; private final int mSubtypeHashCode; @@ -46,24 +46,24 @@ public final class InputMethodSubtype implements Parcelable { * @param modeId The mode supported by the subtype * @param extraValue The extra value of the subtype */ - InputMethodSubtype(int nameId, int iconId, String locale, int modeId, String extraValue) { + InputMethodSubtype(int nameId, int iconId, String locale, String mode, String extraValue) { mSubtypeNameResId = nameId; mSubtypeIconResId = iconId; mSubtypeLocale = locale; - mSubtypeModeResId = modeId; + mSubtypeMode = mode; mSubtypeExtraValue = extraValue; mSubtypeHashCode = hashCodeInternal(mSubtypeNameResId, mSubtypeIconResId, mSubtypeLocale, - mSubtypeModeResId, mSubtypeExtraValue); + mSubtypeMode, mSubtypeExtraValue); } InputMethodSubtype(Parcel source) { mSubtypeNameResId = source.readInt(); mSubtypeIconResId = source.readInt(); mSubtypeLocale = source.readString(); - mSubtypeModeResId = source.readInt(); + mSubtypeMode = source.readString(); mSubtypeExtraValue = source.readString(); mSubtypeHashCode = hashCodeInternal(mSubtypeNameResId, mSubtypeIconResId, mSubtypeLocale, - mSubtypeModeResId, mSubtypeExtraValue); + mSubtypeMode, mSubtypeExtraValue); } /** @@ -90,8 +90,8 @@ public final class InputMethodSubtype implements Parcelable { /** * @return the mode of the subtype */ - public int getModeResId() { - return mSubtypeModeResId; + public String getMode() { + return mSubtypeMode; } /** @@ -111,7 +111,7 @@ public final class InputMethodSubtype implements Parcelable { if (o instanceof InputMethodSubtype) { InputMethodSubtype subtype = (InputMethodSubtype) o; return (subtype.getNameResId() == getNameResId()) - && (subtype.getModeResId() == getModeResId()) + && (subtype.getMode() == getMode()) && (subtype.getIconResId() == getIconResId()) && (subtype.getLocale().equals(getLocale())) && (subtype.getExtraValue().equals(getExtraValue())); @@ -127,7 +127,7 @@ public final class InputMethodSubtype implements Parcelable { dest.writeInt(mSubtypeNameResId); dest.writeInt(mSubtypeIconResId); dest.writeString(mSubtypeLocale); - dest.writeInt(mSubtypeModeResId); + dest.writeString(mSubtypeMode); dest.writeString(mSubtypeExtraValue); } @@ -143,7 +143,7 @@ public final class InputMethodSubtype implements Parcelable { }; private static int hashCodeInternal(int nameResId, int iconResId, String locale, - int modeResId, String extraValue) { - return Arrays.hashCode(new Object[] {nameResId, iconResId, locale, modeResId, extraValue}); + String mode, String extraValue) { + return Arrays.hashCode(new Object[] {nameResId, iconResId, locale, mode, extraValue}); } }
\ No newline at end of file diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 41471d9..d035eb5 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -1622,15 +1622,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (enabledSubtypeSet.contains(String.valueOf(subtype.hashCode()))) { CharSequence title; int nameResId = subtype.getNameResId(); - int modeResId = subtype.getModeResId(); + String mode = subtype.getMode(); if (nameResId != 0) { title = pm.getText(property.getPackageName(), nameResId, property.getServiceInfo().applicationInfo); } else { CharSequence language = subtype.getLocale(); - CharSequence mode = modeResId == 0 ? null - : pm.getText(property.getPackageName(), modeResId, - property.getServiceInfo().applicationInfo); // TODO: Use more friendly Title and UI title = label + "," + (mode == null ? "" : mode) + "," + (language == null ? "" : language); @@ -1869,14 +1866,17 @@ public class InputMethodManagerService extends IInputMethodManager.Stub int applicableSubtypeId = DEFAULT_SUBTYPE_ID; for (int i = 0; i < subtypes.size(); ++i) { final String subtypeLocale = subtypes.get(i).getLocale(); - if (locale.equals(subtypeLocale)) { - // Exact match (e.g. system locale is "en_US" and subtype locale is "en_US") - applicableSubtypeId = i; - break; - } else if (!partialMatchFound && subtypeLocale.startsWith(language)) { - // Partial match (e.g. system locale is "en_US" and subtype locale is "en") - applicableSubtypeId = i; - partialMatchFound = true; + // An applicable subtype should be a keyboard subtype + if (subtypes.get(i).getMode().equalsIgnoreCase("keyboard")) { + if (locale.equals(subtypeLocale)) { + // Exact match (e.g. system locale is "en_US" and subtype locale is "en_US") + applicableSubtypeId = i; + break; + } else if (!partialMatchFound && subtypeLocale.startsWith(language)) { + // Partial match (e.g. system locale is "en_US" and subtype locale is "en") + applicableSubtypeId = i; + partialMatchFound = true; + } } } |