Я запускаю JS-скрипт в WebView. Скрипт оповещает об этом сообщение в WebView, и я хочу его получить в своем приложении. Проблема в том, что onJSAlert
не вызывается, и я не могу использовать @Override
annotaion при определении метода.
Мой импорт -WebChromeClient OnJSAlert не называется
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");
И мой HTML код test.html является
<html>
<body >
<div onclick="alert('CLICK')"> Click Me !! </div>
</body>
</html>
Когда я запустить приложение, то Загрузка файлов HTML и вызов onProgressChanged
- я вижу сообщение журнала, в котором говорится о «завершенной загрузке». Когда я нажимаю ссылку на загруженной странице, onJSAlert
не вызывается - я не получаю сообщение журнала, и вместо этого я могу увидеть диалоговое окно, которое появляется на моем устройстве с предупреждающим сообщением.
Если я попытаюсь использовать annotaion @Override
в начале onJSAlert
, я получаю сообщение об ошибке - «Метод onJSAlert (WebView, String, String, JsResult) типа MainActivity.MyWebClient должен переопределить или реализовать метод супертипа».
Любые идеи?
Thank вы включили в свой пример setJavaScriptEnabled, что был недостающим моментом для меня, чтобы понять, почему мои предупреждения не работали (и очевидно сейчас, и ни один из моих JavaScript). – eselk