設定画面から遷移できるキーボードを有効化する画面に遷移する。
Intent intent = new Intent(); intent.setAction(Settings.ACTION_INPUT_METHOD_SETTINGS); startActivity(intent);
入力に使用するキーボードを選択するダイアログを表示する。
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); inputMethodManager.showInputMethodPicker();
任意のパッケージ名のInputMethodが有効化されているか判定する。
private boolean isEnabled(Context context) { InputMethodManager inputMethodManager = InputMethodManager.class.cast( context.getSystemService(Context.INPUT_METHOD_SERVICE) ); if (inputMethodManager == null) { Log.i("InputMethodManager", "not found."); return false; } String packageName = context.getPackageName(); // 有効なInputMethod一覧に任意のパッケージ名が含まれているか確認する for (InputMethodInfo inputMethodInfo : inputMethodManager.getEnabledInputMethodList()) { if (inputMethodInfo.getServiceName().startsWith(packageName)) { return true; } } return false; }
任意のパッケージ名のInputMethodが入力方法として選択されているかどうか判定する。
private boolean isDefault(Context context) { InputMethodInfo info = null; InputMethodManager inputMethodManager = InputMethodManager.class.cast( context.getSystemService(Context.INPUT_METHOD_SERVICE) ); if (inputMethodManager == null) { Log.i("InputMethodManager", "not found."); return false; } String packageName = context.getPackageName(); // InputMethod一覧に任意のパッケージ名が含まれているか確認する for (InputMethodInfo inputMethodInfo : inputMethodManager.getInputMethodList()) { if (inputMethodInfo.getPackageName().equals(packageName)) { info = inputMethodInfo; } } if (info == null) { Log.i("InputMethodInfo", "not found."); return false; } // infoのidと現在有効になってるIMEのidを比較する String currentIme = android.provider.Settings.Secure.getString( context.getContentResolver(), android.provider.Settings.Secure.DEFAULT_INPUT_METHOD ); return info.getId().equals(currentIme); }
Thanks!