diff options
| author | satok <satok@google.com> | 2010-11-11 20:40:09 +0900 |
|---|---|---|
| committer | satok <satok@google.com> | 2010-11-13 08:00:25 +0900 |
| commit | 735cf38b8c7f8f91ad087511e44fe79018fa61d6 (patch) | |
| tree | d667e138277bad675890391fe741e1e7433049ee | |
| parent | 46e75294d540fe807d78aec2582ae02cc38c7d42 (diff) | |
| download | frameworks_base-735cf38b8c7f8f91ad087511e44fe79018fa61d6.zip frameworks_base-735cf38b8c7f8f91ad087511e44fe79018fa61d6.tar.gz frameworks_base-735cf38b8c7f8f91ad087511e44fe79018fa61d6.tar.bz2 | |
Add a function to switch back to the last used IME
Change-Id: Iac7bcc2ee16dd04d91a3e75b160622d246788c9a
| -rw-r--r-- | api/current.xml | 13 | ||||
| -rw-r--r-- | core/java/android/view/inputmethod/InputMethodManager.java | 11 | ||||
| -rw-r--r-- | core/java/com/android/internal/view/IInputMethodManager.aidl | 2 | ||||
| -rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 15 |
4 files changed, 40 insertions, 1 deletions
diff --git a/api/current.xml b/api/current.xml index ed1d929..ba168be 100644 --- a/api/current.xml +++ b/api/current.xml @@ -219363,6 +219363,19 @@ <parameter name="iconId" type="int"> </parameter> </method> +<method name="switchToLastInputMethod" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="imeToken" type="android.os.IBinder"> +</parameter> +</method> <method name="toggleSoftInput" return="void" abstract="false" diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 033ee7c..1d75b42 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -1432,6 +1432,17 @@ public final class InputMethodManager { } } + public boolean switchToLastInputMethod(IBinder imeToken) { + synchronized (mH) { + try { + return mService.switchToLastInputMethod(imeToken); + } catch (RemoteException e) { + Log.w(TAG, "IME died: " + mCurId, e); + return false; + } + } + } + void doDump(FileDescriptor fd, PrintWriter fout, String[] args) { final Printer p = new PrintWriterPrinter(fout); p.println("Input method client state for " + this + ":"); diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl index ca1cd59..7d8e624 100644 --- a/core/java/com/android/internal/view/IInputMethodManager.aidl +++ b/core/java/com/android/internal/view/IInputMethodManager.aidl @@ -57,7 +57,7 @@ interface IInputMethodManager { void updateStatusIcon(in IBinder token, String packageName, int iconId); void setIMEButtonVisible(in IBinder token, boolean visible); InputMethodSubtype getCurrentInputMethodSubtype(); + boolean switchToLastInputMethod(in IBinder token); boolean setInputMethodEnabled(String id, boolean enabled); } - diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 0d3cfde..1df4405 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -1279,6 +1279,21 @@ public class InputMethodManagerService extends IInputMethodManager.Stub setInputMethodWithSubtype(token, id, NOT_A_SUBTYPE_ID); } + public boolean switchToLastInputMethod(IBinder token) { + synchronized (mMethodMap) { + Pair<String, String> lastIme = mSettings.getLastInputMethodAndSubtypeLocked(); + if (lastIme != null) { + InputMethodInfo imi = mMethodMap.get(lastIme.first); + if (imi != null) { + setInputMethodWithSubtype(token, lastIme.first, getSubtypeIdFromHashCode( + imi, Integer.valueOf(lastIme.second))); + return true; + } + } + return false; + } + } + private void setInputMethodWithSubtype(IBinder token, String id, int subtypeId) { synchronized (mMethodMap) { if (token == null) { |
