@blog.justoneplanet.info

日々勉強

Androidでキーボードの設定画面に遷移させる

設定画面から遷移できるキーボードを有効化する画面に遷移する。

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);
}

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment