diff --git a/src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml b/src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml index 242fcb53..82e77891 100644 --- a/src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml +++ b/src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml @@ -2,7 +2,7 @@ package="keepass2android.softkeyboard"> - + diff --git a/src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/ImeSwitcher.java b/src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/ImeSwitcher.java index 8415759c..4232e424 100644 --- a/src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/ImeSwitcher.java +++ b/src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/ImeSwitcher.java @@ -11,6 +11,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ResolveInfo; import android.inputmethodservice.InputMethodService; import android.os.Bundle; +import android.os.IBinder; import android.preference.PreferenceManager; import android.util.Log; import android.view.inputmethod.InputMethod; @@ -23,10 +24,20 @@ public class ImeSwitcher { private static final String KP2A_SWITCHER = "KP2A_Switcher"; private static final String Tag = "KP2A_SWITCHER"; - public static void switchToPreviousKeyboard(Context ctx, boolean silent) + public static void switchToPreviousKeyboard(InputMethodService ims, boolean silent) { - SharedPreferences prefs = ctx.getSharedPreferences(KP2A_SWITCHER, Context.MODE_PRIVATE); - switchToKeyboard(ctx, prefs.getString(PREVIOUS_KEYBOARD, null), silent); + try { + InputMethodManager imm = (InputMethodManager) ims.getSystemService(Context.INPUT_METHOD_SERVICE); + final IBinder token = ims.getWindow().getWindow().getAttributes().token; + //imm.setInputMethod(token, LATIN); + imm.switchToLastInputMethod(token); + } catch (Throwable t) { // java.lang.NoSuchMethodError if API_level<11 + Log.e("KP2A","cannot set the previous input method:"); + t.printStackTrace(); + SharedPreferences prefs = ims.getSharedPreferences(KP2A_SWITCHER, Context.MODE_PRIVATE); + switchToKeyboard(ims, prefs.getString(PREVIOUS_KEYBOARD, null), silent); + } + } //silent: if true, do not show picker, only switch in background. Don't do anything if switching fails. diff --git a/src/keepass2android/Resources/xml/preferences.xml b/src/keepass2android/Resources/xml/preferences.xml index e24f839f..efe38dc4 100644 --- a/src/keepass2android/Resources/xml/preferences.xml +++ b/src/keepass2android/Resources/xml/preferences.xml @@ -256,7 +256,9 @@ android:title="@string/OpenKp2aKeyboardAutomaticallyOnlyAfterSearch_title" android:key="@string/OpenKp2aKeyboardAutomaticallyOnlyAfterSearch_key" /> - + -