diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
index 362fbb5..f62edc4 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
@@ -169,9 +169,10 @@
             final boolean isImeChecked = (pref instanceof CheckBoxPreference) ?
                     ((CheckBoxPreference) pref).isChecked()
                             : enabledIMEAndSubtypesMap.containsKey(imiId);
-            boolean isCurrentInputMethod = imiId.equals(currentInputMethodId);
-            boolean systemIme = isSystemIme(imi);
-            if (((onlyOneIME || systemIme) && !hasHardKeyboard) || isImeChecked) {
+            final boolean isCurrentInputMethod = imiId.equals(currentInputMethodId);
+            final boolean auxIme = isAuxiliaryIme(imi);
+            final boolean systemIme = isSystemIme(imi);
+            if (((onlyOneIME || (systemIme && !auxIme)) && !hasHardKeyboard) || isImeChecked) {
                 if (!enabledIMEAndSubtypesMap.containsKey(imiId)) {
                     // imiId has just been enabled
                     enabledIMEAndSubtypesMap.put(imiId, new HashSet<String>());
@@ -276,7 +277,7 @@
             List<InputMethodInfo> inputMethodInfos,
             final Map<String, List<Preference>> inputMethodPrefsMap) {
         HashMap<String, HashSet<String>> enabledSubtypes =
-            getEnabledInputMethodsAndSubtypeList(resolver);
+                getEnabledInputMethodsAndSubtypeList(resolver);
 
         for (InputMethodInfo imi : inputMethodInfos) {
             final String imiId = imi.getId();
@@ -342,4 +343,19 @@
         return (property.getServiceInfo().applicationInfo.flags
                 & ApplicationInfo.FLAG_SYSTEM) != 0;
     }
+
+    public static boolean isAuxiliaryIme(InputMethodInfo imi) {
+        final int subtypeCount = imi.getSubtypeCount();
+        if (subtypeCount == 0) {
+            return false;
+        } else {
+            for (int i = 0; i < subtypeCount; ++i) {
+                final InputMethodSubtype subtype = imi.getSubtypeAt(i);
+                if (!subtype.isAuxiliary()) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
 }
diff --git a/src/com/android/settings/inputmethod/InputMethodPreference.java b/src/com/android/settings/inputmethod/InputMethodPreference.java
index 75a32a0..21057a6 100644
--- a/src/com/android/settings/inputmethod/InputMethodPreference.java
+++ b/src/com/android/settings/inputmethod/InputMethodPreference.java
@@ -69,20 +69,8 @@
         mImi = imi;
         updateSummary();
         mIsSystemIme = InputMethodAndSubtypeUtil.isSystemIme(imi);
-        final int subtypeCount = imi.getSubtypeCount();
-        boolean onlyAux = true;
-        if (subtypeCount == 0) {
-            onlyAux = false;
-        } else {
-            for (int i = 0; i < subtypeCount; ++i) {
-                final InputMethodSubtype subtype = imi.getSubtypeAt(i);
-                if (!subtype.isAuxiliary()) {
-                    onlyAux = false;
-                    break;
-                }
-            }
-        }
-        if (imiCount <= 1 || (mIsSystemIme && !onlyAux)) {
+        final boolean isAuxIme = InputMethodAndSubtypeUtil.isAuxiliaryIme(imi);
+        if (imiCount <= 1 || (mIsSystemIme && !isAuxIme)) {
             setEnabled(false);
         }
     }
