How to determine the current IME in Android? How to determine the current IME in Android? android android

How to determine the current IME in Android?


You can get a default IME, use:

Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);


InputMethodManager has getEnabledInputMethodList(). You get an InputMethodManager from getSystemService() in your Activity.


Here's a bit of code I used to determine if GoogleKeyboard, Samsung Keyboard, or Swype Keyboard is used. The value returned by reflection for mCurId indicates the IME ID.

Test with the different keyboards/input methods you are looking for to find the relevant one

public boolean usingSamsungKeyboard(Context context){    return usingKeyboard(context, "com.sec.android.inputmethod/.SamsungKeypad");}public boolean usingSwypeKeyboard(Context context){    return usingKeyboard(context, "com.nuance.swype.input/.IME");}public boolean usingGoogleKeyboard(Context context){    return usingKeyboard(context, "com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME");}   public boolean usingKeyboard(Context context, String keyboardId)    {        final InputMethodManager richImm =          (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);        boolean isKeyboard = false;        final Field field;        try        {            field = richImm.getClass().getDeclaredField("mCurId");            field.setAccessible(true);            Object value = field.get(richImm);            isKeyboard = value.equals(keyboardId);        }        catch (IllegalAccessException e)        {        }        catch (NoSuchFieldException e)        {        }        return  isKeyboard;    }