Android JS调用Java有返回值

在Android开发中,我们经常需要通过JavaScript调用Java代码来实现一些功能。但是有时候我们需要从Java代码获取返回值并传递给JavaScript。本文将介绍如何在Android中实现这一功能,并提供代码示例。

为什么需要从Java获取返回值?

在Android应用开发中,我们通常会使用WebView来加载网页并运行JavaScript代码。有时候我们需要从JavaScript代码中调用Android的Java代码,然后获取Java代码的返回值,以便在JavaScript中进一步处理或显示。

如何从Java获取返回值?

为了在Android中实现从Java获取返回值,我们需要使用@JavascriptInterface注解将Java方法暴露给JavaScript调用,并使用evaluateJavascript()方法来执行JavaScript代码并获取返回值。

public class MyJavaScriptInterface {
    @JavascriptInterface
    public String getReturnValue() {
        return "Hello from Java!";
    }
}
WebView webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJavaScriptInterface(), "Android");

webView.evaluateJavascript("javascript:var returnValue = Android.getReturnValue();returnValue;", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        Log.d("Return Value", value);
    }
});

在上面的代码中,我们定义了一个名为MyJavaScriptInterface的类,其中包含一个名为getReturnValue()的方法,用于返回一个字符串。然后我们将该类注册到WebView中,并使用evaluateJavascript()方法执行JavaScript代码并获取返回值。

示例代码

下面是一个简单的示例,演示了如何从Java获取返回值并在JavaScript中显示出来。

public class MainActivity extends AppCompatActivity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new MyJavaScriptInterface(), "Android");
        webView.loadUrl("file:///android_asset/index.html");
    }

    public class MyJavaScriptInterface {
        @JavascriptInterface
        public String getReturnValue() {
            return "Hello from Java!";
        }
    }
}
<!DOCTYPE html>
<html>
<head>
    <title>Java to JavaScript</title>
    <script>
        function showReturnValue(value) {
            document.getElementById("output").innerText = value;
        }
    </script>
</head>
<body>
    <button onclick="showReturnValue(Android.getReturnValue())">Get Return Value</button>
    <div id="output"></div>
</body>
</html>

在上面的代码中,我们定义了一个MainActivity类,其中包含一个MyJavaScriptInterface内部类,用于暴露getReturnValue()方法给JavaScript调用。在index.html中,我们通过点击按钮来调用getReturnValue()方法并在页面上显示返回值。

总结

通过上述示例代码,我们学习了如何在Android中从Java获取返回值并传递给JavaScript。这种方式可以帮助我们实现更加复杂和交互性强的功能,提升用户体验。希望本文能够对你有所帮助,谢谢阅读!

erDiagram
    CUSTOMER ||--o{ ORDER : places
    ORDER ||--|{ LINE-ITEM : contains
    CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
pie
    title Pie Chart
    "Apples" : 45
    "Oranges" : 25
    "Bananas" : 30

如果您有任何问题或疑问,请随时留言,我们将竭诚为您解答。