Android WebViewでJavaScript関数を呼び出す 質問する

Android WebViewでJavaScript関数を呼び出す 質問する

Android WebView 内で実行されている HTML ページにあるいくつかの JavaScript 関数を呼び出そうとしています。以下のコードが実行しようとしているのは非常に単純です。Android アプリからテスト メッセージを使用して JavaScript 関数を呼び出し、次に Android アプリで Java 関数を呼び出し、トースト経由でテスト メッセージを表示します。

JavaScript 関数は次のようになります。

function testEcho(message){
     window.JSInterface.doEchoTest(message);
}

WebView から、次の方法で JavaScript を呼び出そうとしましたが、うまくいきませんでした。

myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");

WebViewでJavaScriptを有効にしました

myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface"); 

そしてこれがJavaクラスです

public class JSInterface{

private WebView mAppView;
public JSInterface  (WebView appView) {
        this.mAppView = appView;
    }

    public void doEchoTest(String echo){
        Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
        toast.show();
    }
}

何が間違っているのか調べるために、グーグルで調べるのに多くの時間を費やしました。私が見つけた例はすべてこのアプローチを使用しています。ここで何か間違っていることに気づいた人はいますか?

編集: HTML で参照および使用されている他の外部 JavaScript ファイルがいくつかありますが、それが問題なのでしょうか?

ベストアンサー1

問題が何であるかが分かりました。testEcho() パラメータに引用符がありませんでした。呼び出しを機能させるには次のようにしました。

myWebView.loadUrl("javascript:testEcho('Hello World!')");

おすすめ記事