我在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)方法必须覆盖或实现超类型方法“。
有什么想法吗?
答案 0 :(得分:1)
如果在没有正确拼写的情况下使用方法名称,则方法调用将无法正常工作
onJSAlert
更改为:
onJsAlert