Merge "Fix NPE where the current subtype is null"
This commit is contained in:
commit
732edc1ff1
2 changed files with 10 additions and 3 deletions
|
@ -90,6 +90,13 @@ public class ImfUtils {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static InputMethodSubtype getCurrentInputMethodSubtype(Context context,
|
||||||
|
InputMethodSubtype defaultSubtype) {
|
||||||
|
final InputMethodManager imm = getInputMethodManager(context);
|
||||||
|
final InputMethodSubtype currentSubtype = imm.getCurrentInputMethodSubtype();
|
||||||
|
return (currentSubtype != null) ? currentSubtype : defaultSubtype;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean hasMultipleEnabledIMEsOrSubtypes(Context context,
|
public static boolean hasMultipleEnabledIMEsOrSubtypes(Context context,
|
||||||
final boolean shouldIncludeAuxiliarySubtypes) {
|
final boolean shouldIncludeAuxiliarySubtypes) {
|
||||||
final InputMethodManager imm = getInputMethodManager(context);
|
final InputMethodManager imm = getInputMethodManager(context);
|
||||||
|
|
|
@ -98,9 +98,9 @@ public class SubtypeSwitcher {
|
||||||
mConnectivityManager = (ConnectivityManager) service.getSystemService(
|
mConnectivityManager = (ConnectivityManager) service.getSystemService(
|
||||||
Context.CONNECTIVITY_SERVICE);
|
Context.CONNECTIVITY_SERVICE);
|
||||||
mCurrentSystemLocale = mResources.getConfiguration().locale;
|
mCurrentSystemLocale = mResources.getConfiguration().locale;
|
||||||
mCurrentSubtype = mImm.getCurrentInputMethodSubtype();
|
|
||||||
mNoLanguageSubtype = ImfUtils.findSubtypeByLocaleAndKeyboardLayoutSet(
|
mNoLanguageSubtype = ImfUtils.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||||
service, SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY);
|
service, SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY);
|
||||||
|
mCurrentSubtype = ImfUtils.getCurrentInputMethodSubtype(service, mNoLanguageSubtype);
|
||||||
if (mNoLanguageSubtype == null) {
|
if (mNoLanguageSubtype == null) {
|
||||||
throw new RuntimeException("Can't find no lanugage with QWERTY subtype");
|
throw new RuntimeException("Can't find no lanugage with QWERTY subtype");
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ public class SubtypeSwitcher {
|
||||||
// Only configuration changed event is allowed to call this because this is heavy.
|
// Only configuration changed event is allowed to call this because this is heavy.
|
||||||
private void updateAllParameters() {
|
private void updateAllParameters() {
|
||||||
mCurrentSystemLocale = mResources.getConfiguration().locale;
|
mCurrentSystemLocale = mResources.getConfiguration().locale;
|
||||||
updateSubtype(mImm.getCurrentInputMethodSubtype());
|
updateSubtype(ImfUtils.getCurrentInputMethodSubtype(mService, mNoLanguageSubtype));
|
||||||
updateParametersOnStartInputView();
|
updateParametersOnStartInputView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ public class SubtypeSwitcher {
|
||||||
+ currentSubtype.getLocale() + "/" + currentSubtype.getExtraValue());
|
+ currentSubtype.getLocale() + "/" + currentSubtype.getExtraValue());
|
||||||
Log.w(TAG, "Last subtype was disabled. Update to the current one.");
|
Log.w(TAG, "Last subtype was disabled. Update to the current one.");
|
||||||
}
|
}
|
||||||
updateSubtype(mImm.getCurrentInputMethodSubtype());
|
updateSubtype(ImfUtils.getCurrentInputMethodSubtype(mService, mNoLanguageSubtype));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue