首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调用javascript函数并从javascript函数中获取返回值

如何调用javascript函数并从javascript函数中获取返回值
EN

Stack Overflow用户
提问于 2014-08-01 07:18:24
回答 1查看 13.2K关注 0票数 8

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

样本,

代码语言:javascript
运行
复制
function getStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   return myJsString;
}

现在我想调用函数getStringToMyAndroid(“来自安卓的字符串”),并在我的Android上获得返回的myJsString,这样以后我就可以在Android上使用myJsString

我知道我可以用

代码语言:javascript
运行
复制
WebView.loadUrl("javascript:getStringToMyAndroid('This string from android')")

调用JS函数,但我希望从JS函数中获取字符串或值。

注意:我的android运行在最小SDKAndroid3.0蜂窝上

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-01 07:27:24

对于API级别< 19,只有使用JavascriptInterface (下面是我的首选方法)或劫持OnJsAlert方法和使用alert()对话框的变通方法。这意味着您不能将alert()函数用于其预期目的。

视图:

代码语言:javascript
运行
复制
WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")

JsInterface:

代码语言:javascript
运行
复制
public class JsInterface() {
    @JavascriptInterface
    void receiveString(String value) {
        // String received from WebView
        Log.d("MyApp", value);
    }
}

Javascript:

代码语言:javascript
运行
复制
function doStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   // Call the JavascriptInterface instead of returning the value
   window.AndroidApp.receiveString(myJsString);
}

但是在API级别的19+上,我们现在有了evaluateJavascript方法:

代码语言:javascript
运行
复制
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
    }
});
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25074903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档