2016-10-25 2 views
0

Android에서 (내 WebView에있는) JavaScript 함수를 호출하고 Java에서 반환 값을 얻을 수 있습니까?Android에서 호출하는 JavaScript 함수의 반환 값을 얻으려면 어떻게해야합니까?

것은 그래서 내가 뭔가를하고 싶습니다 ...

은 내가 이것을 위해 내가 JS 기능의 인터페이스를 호출해야합니다 (안드로이드)을 JavascriptInterface를 사용할 수 알지만, 자바 스크립트 기능을 수정할 수 없습니다 아래처럼 가능합니까?

자바 스크립트 :

function hello(){ 
    return "world"; 
} 

안드로이드 :

String res = myWebView.loadUrl("javascript:hello()"); 
// res = "world" 

당신에게 감사

답변

0

네, 가능합니다. 나는 이미 사람들이 웹 사이트에 많은 자바 스크립트 주사를하기 전에. 당신은 단지 어떤 웹 사이트에 자신의 자바 스크립트를 삽입해야합니다. 예를 들어

는 WebAppInterface에서

//simple javascript to pass value from javascript to native app 
String javascript = "javascript:function testHello(){return Android.hello('HAI'); testHello();}" 

webview.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       super.onPageStarted(view, url, favicon); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 
       //put your function in string and load the javascript when the page is finished load 
       view.loadUrl(javascript); 
      } 
}); 

// 'Android' is your variable key for triggering the function ex: Android.hello(), Android.calculate() 
// you can change to other name like 'APP', so in javascript be like this ex: APP.hello(), APP.calculate() 

webview.addJavascriptInterface(new WebAppInterface(this), "Android"); 

//load website 
webview.loadUrl(PageUrl); 

는 이전

public class WebAppInterface { 
    Activity mContext; 

    public WebAppInterface(Activity c) { 
     mContext = c; 
    } 

    //this function will get your value from the javascript earlier. 
    //Android.hello('value') 

    @JavascriptInterface 
    public void hello(String value){ 
     //you will get HAI message in here 
     Log.i("TAG",value); 
    } 
} 
를 주입 자바 스크립트를 감지하는 기능을 만들 수있는 곳입니다
관련 문제