2016-10-25 4 views
0

Ist es in Android möglich, eine JavaScript-Funktion (die sich in meinem WebView befindet) aufzurufen und dessen Rückgabewert in Java zu erhalten?Wie kann ich den Rückgabewert einer von Android aufgerufenen JavaScript-Funktion abrufen?

Ich weiß, dass ich eine JavascriptInterface (in Android) verwenden können, denn das ich die Schnittstelle von der js Funktion aufrufen müssen, aber ich kann die JavaScript-Funktion nicht ändern ...

So würde ich etwas mag wie unten, ist es möglich?

JavaScript:

function hello(){ 
    return "world"; 
} 

Android:

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

Danke

Antwort

0

Ja, es ist möglich. Ich mache bereits viele Javascript-Injektion auf der Website von Menschen vor. Sie müssen nur Ihr eigenes Javascript in jede Website injizieren.

Zum Beispiel

//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); 

In WebAppInterface ist, wo Sie Funktion erstellen Sie die Javascript zuvor

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); 
    } 
} 
injizieren zu erkennen
Verwandte Themen