summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2013-05-21 04:27:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-05-21 04:27:34 +0000
commitede3db51f0fb16559c27aa29a7cf07784bb9431c (patch)
tree13f40c1975f5f6482eeccebc07e539e6eec33066
parent23bff513a97a71eacc6eadf694ce6f5a1e07967c (diff)
parent10e8b9397717cc04b9a2aaee4b91f9d7ccbbf8e6 (diff)
downloadandroid_packages_inputmethods_LatinIME-ede3db51f0fb16559c27aa29a7cf07784bb9431c.tar.gz
android_packages_inputmethods_LatinIME-ede3db51f0fb16559c27aa29a7cf07784bb9431c.tar.bz2
android_packages_inputmethods_LatinIME-ede3db51f0fb16559c27aa29a7cf07784bb9431c.zip
Merge "Fix a crash on a secondary user" into jb-mr2-dev
-rw-r--r--java/src/com/android/inputmethod/latin/RichInputMethodManager.java7
-rw-r--r--java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java11
2 files changed, 16 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
index 94513e635..0dd302afa 100644
--- a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
+++ b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
@@ -54,6 +54,13 @@ public final class RichInputMethodManager {
return sInstance;
}
+ // Caveat: This may cause IPC
+ public static boolean isInputMethodManagerValidForUserOfThisProcess(final Context context) {
+ // Basically called to check whether this IME has been triggered by the current user or not
+ return !((InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE)).
+ getInputMethodList().isEmpty();
+ }
+
public static void init(final Context context) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
sInstance.initInternal(context, prefs);
diff --git a/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java b/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
index 1b893a65d..6a7cd9b6f 100644
--- a/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
+++ b/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
@@ -68,8 +68,15 @@ public final class LauncherIconVisibilityManager extends BroadcastReceiver {
// 1) the package has been re-installed, 2) the device has been booted,
// 3) a multiuser has been created.
// There is no good reason to keep the process alive if this IME isn't a current IME.
- RichInputMethodManager.init(context);
- if (!SetupActivity.isThisImeCurrent(context)) {
+ final boolean isCurrentImeOfCurrentUser;
+ if (RichInputMethodManager.isInputMethodManagerValidForUserOfThisProcess(context)) {
+ RichInputMethodManager.init(context);
+ isCurrentImeOfCurrentUser = SetupActivity.isThisImeCurrent(context);
+ } else {
+ isCurrentImeOfCurrentUser = false;
+ }
+
+ if (!isCurrentImeOfCurrentUser) {
final int myPid = Process.myPid();
Log.i(TAG, "Killing my process: pid=" + myPid);
Process.killProcess(myPid);