diff options
| author | Brandon Ballinger <brandonb@google.com> | 2009-10-22 10:48:49 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2009-10-22 10:48:49 -0700 |
| commit | 9f9f56212610ddd69c8af8ddeeed39265c0e58e1 (patch) | |
| tree | eac6a9dd01cae217f5e0d895687318cd854bf002 /services | |
| parent | 585449b084ebeaaad4b9d2bc1912490e952c5a01 (diff) | |
| parent | 0737b1643071694cf8767e3609ad628f1679d63a (diff) | |
| download | frameworks_base-9f9f56212610ddd69c8af8ddeeed39265c0e58e1.zip frameworks_base-9f9f56212610ddd69c8af8ddeeed39265c0e58e1.tar.gz frameworks_base-9f9f56212610ddd69c8af8ddeeed39265c0e58e1.tar.bz2 | |
am 0737b164: Merge change I959a6f46 into eclair
Merge commit '0737b1643071694cf8767e3609ad628f1679d63a' into eclair-mr2
* commit '0737b1643071694cf8767e3609ad628f1679d63a':
Fix bug 2194213: Non-default system IMEs are enabled, but not initially shown in input method switcher.
Diffstat (limited to 'services')
| -rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 1da2b47..e2e0ba9 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -41,6 +41,7 @@ import android.content.IntentFilter; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.ServiceConnection; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; @@ -366,16 +367,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub // Uh oh, current input method is no longer around! // Pick another one... Log.i(TAG, "Current input method removed: " + curInputMethodId); - List<InputMethodInfo> enabled = getEnabledInputMethodListLocked(); - if (enabled != null && enabled.size() > 0) { - changed = true; - curIm = enabled.get(0); - curInputMethodId = curIm.getId(); - Log.i(TAG, "Switching to: " + curInputMethodId); - Settings.Secure.putString(mContext.getContentResolver(), - Settings.Secure.DEFAULT_INPUT_METHOD, - curInputMethodId); - } else if (curIm != null) { + if (!chooseNewDefaultIME()) { changed = true; curIm = null; curInputMethodId = ""; @@ -389,16 +381,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } else if (curIm == null) { // We currently don't have a default input method... is // one now available? - List<InputMethodInfo> enabled = getEnabledInputMethodListLocked(); - if (enabled != null && enabled.size() > 0) { - changed = true; - curIm = enabled.get(0); - curInputMethodId = curIm.getId(); - Log.i(TAG, "New default input method: " + curInputMethodId); - Settings.Secure.putString(mContext.getContentResolver(), - Settings.Secure.DEFAULT_INPUT_METHOD, - curInputMethodId); - } + changed = chooseNewDefaultIME(); } if (changed) { @@ -1369,6 +1352,23 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return false; } + private boolean isSystemIme(InputMethodInfo inputMethod) { + return (inputMethod.getServiceInfo().applicationInfo.flags + & ApplicationInfo.FLAG_SYSTEM) != 0; + } + + private boolean chooseNewDefaultIME() { + List<InputMethodInfo> enabled = getEnabledInputMethodListLocked(); + if (enabled != null && enabled.size() > 0) { + Settings.Secure.putString(mContext.getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD, + enabled.get(0).getId()); + return true; + } + + return false; + } + void buildInputMethodListLocked(ArrayList<InputMethodInfo> list, HashMap<String, InputMethodInfo> map) { list.clear(); @@ -1399,6 +1399,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub list.add(p); map.put(p.getId(), p); + // System IMEs are enabled by default + if (isSystemIme(p)) { + setInputMethodEnabled(p.getId(), true); + } + if (DEBUG) { Log.d(TAG, "Found a third-party input method " + p); } @@ -1409,6 +1414,14 @@ public class InputMethodManagerService extends IInputMethodManager.Stub Log.w(TAG, "Unable to load input method " + compName, e); } } + + String defaultIme = Settings.Secure.getString(mContext + .getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); + if (!map.containsKey(defaultIme)) { + if (chooseNewDefaultIME()) { + updateFromSettingsLocked(); + } + } } // ---------------------------------------------------------------------- |
