2

これがうまくいかない理由は本当にありません。基本的に、私はこれをやろうとしています。

 public void testJS() {
        final WebView webView = (WebView) findViewById(web);
//        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new JSInterface(webView), "sample");
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        /* Do whatever you need here */
                Log.e("chrome", "asdf");
                return super.onJsAlert(view, url, message, result);
            }


        });
        webView.loadUrl("javascript:window.sample.doEchoTest();void(0);");
    }

これはJSInterfaceです

   public class JSInterface {
        WebView mAppView;

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

        public void doEchoTest() {
            Log.e("sample", "test details");
            Toast toast = Toast.makeText(mAppView.getContext(), "sample test details", Toast.LENGTH_SHORT);
            toast.show();
        }
    }

JavaScript コードは実行されません。

アラートのような基本的な機能:

webView.loadUrl("javascript:alert('sample')");

なぜ機能しないのwebView.loadUrl("javascript:window.sample.doEchoTest();void(0);"); ですか?

4

1 に答える 1