2011-09-02 2 views

답변

2

쉽지 않습니다.

...은 현재 웹 페이지에서 실행될 JavaScript 코드입니다. loadUrl("javascript:...")을 호출 할 수 있습니다. 웹 페이지의 컨텍스트에 "일부 이벤트 발생"이 있으면이 방법으로 충분합니다. "일부 이벤트 발생"Java 코드가 필요한 경우에는 addJavaScriptInterface()을 사용하여 JavaScript-> Java 브리지 객체를 생성하고 loadUrl("javascript:...") 코드를 호출하여 데이터를 Java로 다시 가져와야합니다.

+0

자바 스크립트 코드를 실행하고 자바 코드로 값을 반환하는 방법은 무엇입니까? – crossle

+0

@CrossleSong : 그건 직접 가능하지 않습니다. 그러나,'addJavaScriptInterface()'를 사용하여 자바 객체를 합성 JavaScript 전역으로 추가하고 반환 값을 전달하기 위해 전역 클래스의 메소드를 호출하는 JavaScript를 loadUrl ("javascript : ...") 호출로 사용할 수 있습니다. – CommonsWare

1
addJavascriptInterface(new WebviewJSInterface(), JS_INTERFACE); 

    private class WebviewJSInterface 
    { 
     @JavascriptInterface 
     public void processHTML(String output) 
     { 
      Log.d("log", "hello: " +output); 
     } 
    } 

     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      loadUrl("javascript:window. " + JS_INTERFACE + ".processHTML(document.getElementsByTagName('body')[0].innerHTML);"); 
      super.onPageFinished(view, url); 
     } 
관련 문제