2015-06-13 4 views
1

Я запускаю 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 должен переопределить или реализовать метод супертипа».
Любые идеи?

+0

Thank вы включили в свой пример setJavaScriptEnabled, что был недостающим моментом для меня, чтобы понять, почему мои предупреждения не работали (и очевидно сейчас, и ни один из моих JavaScript). – eselk

ответ

1

Если вы используете имя метода без надлежащего правописания, ваши вызовы метода не будут работать

onJSAlert

Изменить на:

onJsAlert

+0

Не могу поверить, что это такая глупая ошибка ... – TDG