我正在WebView中运行JS脚本。该脚本将消息警报到WebView,我想在我的应用程序中接收它。问题在于,在定义方法时,不会调用onJSAlert,也不能使用@Override注释。
我的进口是-

import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.JsResult;
import android.webkit.WebSettings;


我这样使用WebView-

webView = (WebView)findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if (newProgress == 100) {
            Log.d("fibi", "finished loading");
            }
        }
        //@Override //If I uncomment this I get compilation error
        public boolean onJSAlert(WebView view, String url, String message, final JsResult result) {
            encResult = message;
            Log.d("fibi", encResult);
            result.cancel();
            return true;
        }
    });
webView.loadUrl("file:///android_asset/test.html");


我的test.html HTML代码是

 <html>
   <body >
     <div onclick="alert('CLICK')"> Click Me !!  </div>
   </body>
</html>


当我运行该应用程序时,将加载HTML文件并调用onProgressChanged-我可以看到显示“已完成加载”的日志消息。当我单击加载页面上的链接时,未调用onJSAlert-我没有收到日志消息,而是可以看到一个对话框窗口,其中弹出带有警告消息的设备。
如果尝试在@Override的开头使用onJSAlert注释,则会出现错误-“ MainActivity.MyWebClient类型的onJSAlert(WebView,String,String,JsResult)方法必须重写或实现超类型方法”。
有任何想法吗?

最佳答案

如果您使用的方法名称没有正确的拼写,则您的方法调用将不起作用


  onJSAlert


改成:


  onJsAlert

09-11 12:46