обнаруживает нажатие кнопки javascript в webview?

#android #html #webview

#Android #HTML #webview

Вопрос:

Кто-нибудь знает способ определить, нажата ли кнопка с этим кодом ниже в исходном коде веб-страницы в My apps webview?

html-источник кнопки:

 <input id="testBtn" name="testBtn" type="button" value="Test Button" 
class="button" onclick="test.run(this.id,'onclick');return false;" 
onkeydown="test.run(this.id,'onkeydown');return false;" title="Test Button">
  

а затем произнести тост?

P.s. Я не могу изменить html-код, это не мой сайт

Ответ №1:

это будет легко, просто определите свой интерфейс Javascript

 final class jocJavaScriptInterface {
    jocJavaScriptInterface() {
    }
    String myEvent;
    public void run(int id,String event) { //run method defined into your html.
        this.myEvent = event;
        mHandler.post(new Runnable() {
            public void run() {
        Toast.makeText(getApplicationContext(),myEvent   " my ButtoN!", Toast.LENGTH_LONG).show();
            }
        });
    }
}
  

Добавьте интерфейс Javascript в свой webview

     WebContent.addJavascriptInterface(new jocJavaScriptInterface(), "test");        
    WebContent.loadUrl("http://www.foo.com/Androidtest.html"); //load your Page with the button...
    WebSettings webSettings = WebContent.getSettings();
    webSettings.setSavePassword(false);
    webSettings.setSaveFormData(false);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setSupportZoom(true);     
  

Комментарии:

1. Будьте осторожны при использовании addJavascriptInterface, это оставляет брешь в безопасности приложения. Разработчики Android пишут: Внимание: Использование addJavascriptInterface() позволяет JavaScript управлять вашим приложением для Android. в developer.android.com/guide/webapps/webview.html