明日も楽をするために

めんどくさがりなITエンジニアが書くメモ帳

iOSのstringByEvaluatingJavaScriptFromStringをAndroidで再現する方法

iOSにはstringByEvaluatingJavaScriptFromStringと言うJavaScriptのStringの返り値を取得する関数があります。

しかしAndroidに同じ関数はありません。単純にJavaScriptを実行したいだけならWebViewのloadurlに以下を指定すれば実行できます。

JavaScriptを実行するJavaのコード

WebView.loadUrl("javascript:foo()");

しかしstringByEvaluatingJavaScriptFromStringのように返り値を取得する場合は以下になります。

実行するJavaScript

function foo(){
    alert("foo");
}

実行するJava

WebView webView = (WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);//JavaScriptを有効にする
webView.loadUrl("javascript:foo()");
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        String foo = message;//ここにJavaScriptのアラートの値が入ってくる
        result.confirm();
        return true;
    }
});