我如何调用javascript函数并从javascript函数获得返回值

How I can call javascript function and get the return value from javascript function

本文关键字:javascript 函数 返回值 何调用 调用      更新时间:2023-09-26

我想从Java Android上的JS函数中获取值

样本,

function getStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   return myJsString;
}

现在我想调用函数getStringToMyAndroid("This string from android")并在我的android上返回myJsString,所以我可以在我的android上使用myJsString;

我知道我可以使用

WebView.loadUrl("javascript:getStringToMyAndroid('This string from android')")

调用JS函数但我想从JS函数

中获取字符串或值

注意:我的android运行在最低SDK android 3.0 honeycomb

For API Level <19只有使用JavascriptInterface(我的首选方法,下面)或劫持OnJsAlert方法和使用alert()对话框代替的解决方案。这就意味着您不能将alert()函数用于其预期目的。

视图:

WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")

JsInterface:

public class JsInterface() {
    @JavascriptInterface
    void receiveString(String value) {
        // String received from WebView
        Log.d("MyApp", value);
    }
}
Javascript:

function doStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   // Call the JavascriptInterface instead of returning the value
   window.AndroidApp.receiveString(myJsString);
}

但是在API Level 19+中,我们现在有了evaluateJavascript方法:

WebView.evaluateJavascript("(function() { return getStringToMyAndroid('" + myJsString + "'); })();", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        Log.d("LogName", s); // Returns the value from the function
    }
});