もやもやエンジニア

IT系のネタで思ったことや技術系のネタを備忘録的に綴っていきます。フロント率高め。

Androidでボタン押して外部ブラウザ起動するとこで showStatusIcon on inactive InputConnection

タイトルの通りですが、単に指定したURLのページをブラウザで開くボタンを作ってぽちっと押すと以下のWarningが出たので対応した話。

W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection

同じページ内に置いているEditTextにフォーカスがあたっている状態でブラウザ起動するIntentを発行しているのが原因でした。

なので、適当なViewにfocusableInTouchModeを指定してあげてStartActivity前にフォーカスを違うViewに移動してあげると解決。

こんな感じ

onCreateViewでタッチ可能に

mView.setFocusableInTouchMode(true);

ボタンのClickListenrの中でEditTextからフォーカスを外す

        // 親Viewにフォーカスを移し、EditTextからフォーカスを外す
        // W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection 対策
        mView.requestFocus();

        Uri.Builder builder = new Uri.Builder()
                .scheme("http")
                .encodedAuthority("hogehoge.com");
        Intent intent = new Intent(Intent.ACTION_VIEW, builder.build());
        startActivity(intent);