diff --git a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java index a3a3ea88e..a30570aa2 100644 --- a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java +++ b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java @@ -564,8 +564,18 @@ public class VoiceIMEConnector implements VoiceInput.UiListener { } private void switchToLastInputMethod() { - IBinder token = mService.getWindow().getWindow().getAttributes().token; - mImm.switchToLastInputMethod(token); + final IBinder token = mService.getWindow().getWindow().getAttributes().token; + new Thread ("switchToLastInputMethod") { + @Override + public void run() { + if (!mImm.switchToLastInputMethod(token)) { + // Needs to reset here because LatinIME failed to back to any IME and + // the same voice subtype will be triggered in the next time. + mVoiceInput.reset(); + mService.requestHideSelf(0); + } + } + }.start(); } private void reallyStartListening(boolean swipe) {