Android WebView にJavascriptのイベントハンドラを追加する


ちょっと困ったのでメモ

androidのWebViewに読み込んだページにイベントハンドラをInjectして実行したい時があった。

WebView#onPageFinishedでjavascriptを読み込んだところうまくいきました。

android_Inject_keydown_event_handler_to_WebView_from_native_code
@InjectView(R.id.profile_registration_webView)
WebView mWebView;

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
                 // url to filter target page
        if (url.startsWith("http://target/page/url")) { 
                //something to do in javascript
            view.loadUrl("javascript:$('#target_element_id').keydown( function () {" +
                         "  $('html, body').animate({ scrollTop: 10000}, 300);" +
               "} );");
        }
    }
});