温馨提示×

温馨提示×

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

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

安卓webview如何注入

发布时间:2026-10-10 22:41:17 来源:亿速云 阅读:105 作者:小樊 栏目:移动开发

在 Android 的 WebView 中“注入”通常有三种常见含义,下面分别说明,你可以按需使用:


一、注入 JavaScript(最常用)

1️⃣ 通过 addJavascriptInterface(Java ↔ JS 通信)

适合:把 Java 对象暴露给 JS 调用

webView.getSettings().setJavaScriptEnabled(true);

webView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public String getToken() {
        return "abc123";
    }
}, "Android");

// JS 中调用
// Android.getToken()

⚠️ 注意:

  • 方法必须加 @JavascriptInterface
  • Android 4.2 以下有安全风险

2️⃣ 注入 JS 代码(evaluateJavascript)

适合:页面加载完成后执行 JS

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        webView.evaluateJavascript(
            "javascript:document.title='Hello'",
            null
        );
    }
});

3️⃣ 注入 JS 文件 / 脚本内容

适合:注入统计、调试、修改 DOM

String js = "var s=document.createElement('script');" +
            "s.src='https://xxx.com/inject.js';" +
            "document.body.appendChild(s);";

webView.evaluateJavascript(js, null);

二、注入 Java 对象(原生能力给 H5)

class JSBridge {
    @JavascriptInterface
    public void showToast(String msg) {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }
}

webView.addJavascriptInterface(new JSBridge(), "Native");

JS 调用:

Native.showToast("你好");

三、注入 Header / Cookie(请求层注入)

1️⃣ 注入 Header

Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "Bearer token");
webView.loadUrl(url, headers);

2️⃣ 注入 Cookie

CookieManager cm = CookieManager.getInstance();
cm.setCookie("https://example.com", "token=abc");

四、高级:注入自定义 WebViewClient / 拦截请求

webView.setWebViewClient(new WebViewClient() {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        // 可修改、替换资源
        return super.shouldInterceptRequest(view, request);
    }
});

常见用途总结

需求 方式
JS 调原生 addJavascriptInterface
原生调 JS evaluateJavascript
注入脚本 evaluateJavascript
注入参数 Header / Cookie
修改请求 shouldInterceptRequest

如果你是指 “注入 SDK / 框架 / 调试工具(如 vConsole)” 或 “Xposed / Hook 注入”,可以告诉我具体场景,我可以给你更针对性的方案。

向AI问一下细节

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

AI
助
手