首页 > 解决方案 > 如何在没有 JS 接口的情况下立即将值从 JS 函数返回到 Java?

问题描述

我有一个网络视图。我想从 Java 调用 JS 函数并将返回值分配给一个变量。

来自 java 的这一行调用 JavaScript 的 getUserDetails() 函数。

webview.loadUrl("javascript:window.getUserDetails()");

这是 javascript 中的 getUserDetails 函数,它返回一个字符串

window.getUserDetails = function(){
    return "username"; 
}

我想实现这样的目标。

String user = webview.loadUrl("javascript:window.getUserDetails()");

我怎样才能做到这一点?

标签: javascriptjavaandroidwebview

解决方案


您必须更改调用该方法的方式。

webview.loadUrl("javascript:alert(window.getUserDetails())");

在处理警报时,您的返回值将在那里。欲了解更多信息,请点击此链接

根据评论,您可以通过以下方式执行此操作。

String  mUserName; 


String getUserName(){ 


runOnUiThread(new Runnable() {

        @Override
        public void run() {


webView.loadUrl("javascript:android.onData(window.getUserDetails())");

        }
    });

return mUserName;
}


@JavascriptInterface
public void onData(String value) {
   mUserName = value;
}

推荐阅读