WebView与JavaScript交互

本文介绍如何在Android应用中使用WebView加载网页,并通过JavaScriptInterface实现Java与JavaScript之间的交互,包括调用原生方法启动登录活动及回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

settings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JavascriptInterface(), "android");
mWebView.loadUrl(mUrl);


class JavascriptInterface {
        @android.webkit.JavascriptInterface
        public void startLoginActivity() {
            //
        }
    }




<!DOCTYPE HTML>
<html>


<script type="text/javascript">
  function login() {
    android.startLoginActivity();
  }
  function loginSuccess(userId) {
      alert(userId);
  }
</script>


<body>


<button onClick="startLogin()">gotoActivity</button>




</body>
</html>




-keepclassmembers class packagename.WebViewActivity {
  public *;
}
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
### 实现WebViewJavaScript交互的方法 在Android应用程序中,`WebView` 组件可以加载并显示网页内容。为了使 `WebView` 支持 JavaScript交互,需先确保启用了 JavaScript 功能,并设置相应的权限让两者能够互相通信。 #### 启用JavaScript支持 要允许 `WebView` 执行 JavaScript 代码,在初始化时应调整其设置: ```java // 获取WebView实例 WebView webView = (WebView)findViewById(R.id.webview); // 设置WebSettings对象来开启JavaScript执行能力 webView.getSettings().setJavaScriptEnabled(true); ``` 此操作使得页面内的脚本可以在 `WebView` 中正常运行[^2]。 #### 创建Java接口供JavaScript调用 为了让 JavaScript 可以访问 Android 应用程序的功能,可以通过 `addJavascriptInterface()` 方法向 Web 页面公开 Java 对象作为桥梁。这一步骤定义了一个名为 “Android”的全局变量可供 JS 使用: ```java // 将自定义类MyJavaScriptInterface的对象添加到WebView环境中 webView.addJavascriptInterface(new MyJavaScriptInterface(this), "Android"); ``` 这里假设有一个实现了特定功能的 `MyJavaScriptInterface` 类被用来处理来自 JavaScript 的请求。 #### 加载含有JS的内容至WebView 一旦完成了上述准备工作,则可通过 `loadUrl(String url)` 或者其他方式加载 HTML 文件或 URL 地址进入 `WebView`. 如果是动态生成的数据也可以考虑使用 loadData() 函数替代 loadUrl(): ```java // 加载指定URL地址的网页资源 webView.loadUrl("file:///android_asset/demo.html"); // 假设demo.html位于assets目录下 ``` 此时如果该网页中有尝试调用之前注册过的 'Android' 接口函数的话就会触发对应的逻辑响应. #### 安全注意事项 值得注意的是, 当前版本的 Android SDK 已经加强了对于此类跨平台调用的安全机制. 开发人员应当遵循官方文档中的指导原则以及最佳实践建议来进行安全编码. 例如, 不要在 API Level >=17 上继续沿用旧版API; 确保只传递必要的数据给 web 层面;避免泄露敏感信息等措施都是十分重要的[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值