カスタムキーボードは作った、が有効判定ができない!
いろいろ合ってカスタムキーボードをAndroid Studioで開発していて、キーボード自体は作ったはいいものの、IMEの有効判定の方法がなかなか見つかりませんでした。
何がしたくてこんなことしようとしていたかというと、某キーボードアプリでは、アプリ内でキーボードが有効になっていないときにアラートを表示して、設定まで飛んで、IMEを有効にさせようとしますよね。
わからない?
...まあ、それなら仕方ない。
とりあえずそういったことがしたかったわけですよ。
その備忘録としてコードを残しておきます。
ちなみに、今さらkotlinじゃなく、javaで開発してしまったのはご愛敬。
実はそれほど難しくなかった
早速コードを見ていただきましょう。
hoge.java
//インストールされているIMEアプリケーション一覧取得
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
List<InputMethodInfo> inputMethodInfoList = imm.getEnabledInputMethodList();
for (int i = 0; i < inputMethodInfoList.size(); ++i) {
InputMethodInfo inputMethodInfo = inputMethodInfoList.get(i);
CharSequence label = inputMethodInfo.loadLabel(getPackageManager());
if(String.valueOf(label).equals("hoge_keyboard")) {
Log.v("label", String.valueOf(label) + " is active!");
}
}
まあ、こんな感じですね。自分もandroid開発始めたばっかりの初心者なので、もっといい方法があるかもしれません。
if文はキーボード名がhoge_keyboard
とマッチするときにログで表示するようにしています。マッチしたい名称と、if文の中身を皆さんのコードに合わせて変えていただければ、大丈夫です。
同じような問題にぶち当たっている人のお役に立てれば幸いです。