温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

安卓webview怎么与js交互

发布时间:2026-09-20 07:19:02 来源:亿速云 阅读:114 作者:小樊 栏目:移动开发

在 Android 的 WebView 中,与 JS 交互主要有两种方式:


一、Android 调用 JS

1️⃣ 使用 loadUrl()(不推荐,简单场景可用)

webView.loadUrl("javascript:showToast('Hello from Android')");

2️⃣ 使用 evaluateJavascript()(推荐,API 19+)

webView.evaluateJavascript("javascript:getResult()", value -> {
    // value 是 JS 返回结果
    Log.d("JS Result", value);
});

二、JS 调用 Android

1️⃣ 使用 addJavascriptInterface(最常用)

Android 端

webView.getSettings().setJavaScriptEnabled(true);

webView.addJavascriptInterface(new JsBridge(), "AndroidBridge");
public class JsBridge {
    @JavascriptInterface
    public void showToast(String msg) {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }
}

JS 端

<script>
    AndroidBridge.showToast("Hello from JS");
</script>

⚠️ 注意:

  • 方法必须加 @JavascriptInterface
  • Android 4.2 以下有安全漏洞,不建议在旧系统使用

2️⃣ 使用 shouldOverrideUrlLoading(兼容性好)

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("jsbridge://")) {
            // 解析 url 调用对应方法
            return true;
        }
        return false;
    }
});

JS:

location.href = "jsbridge://method?param=123";

3️⃣ 使用 WebChromeClient(如 alert / confirm)

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
        result.confirm();
        return true;
    }
});

三、常见配置

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);

四、推荐方案总结

场景 方案
Android → JS evaluateJavascript
JS → Android addJavascriptInterface
老系统 / 安全 URL Scheme

如果你有 具体业务场景(如登录、支付、分享),我可以给你更完整的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手