webview调用android代码

在开发的时候经常会用到webview,必然会涉及到webview与客户端的交互,比如在网页上进行某个操作后,需要在app上显示一个提示,提示内容由网页提供,这时候就需要js来调用客户端的java代码了。

webview提供了一个方法addJavascriptInterface()来满足这种需求。

具体步骤:

  1. 客户端定义一个类,并定义需要的方法,例如: public class WebAppInterface { Context mContext; /** * Instantiate the interface and set the context */ WebAppInterface(Context c) { mContext = c; } /** * Show a toast from the web page */ @JavascriptInterface public void showToastContent(String content) { } } 注意,在方法定义前加上@JavascriptInterface注解。
    1. 生成第一步中定义的类的实例并添加给webview。 webView.addJavascriptInterface(new WebAppInterface(getActivity()), "TestObject");

    这里的"TestObject"是随便起的名字,你可以改成其他的。这个名字主要是让webview的js调用的。

  2. 在js中通过"TestObject"对象调用客户端方法 TestObject.showToastContent("haha")

备上一段官网关于这个内容的代码:

class JsObject {
    @JavascriptInterface
    public String toString() { return "injectedObject"; }
 }
 webView.addJavascriptInterface(new JsObject(), "injectedObject");
 webView.loadData("", "text/html", null);
 webView.loadUrl("javascript:alert(injectedObject.toString())");

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏求索之路

Android数据层架构的实现 下篇

接上篇:Android数据层架构的实现 上篇 4.外观模式实现数据处理引擎框架暴露出来的api 我们在使用各种开源框架的时候,大多数时候都不会对框架内部...

3295
来自专栏流媒体

Android RTMP推流之MediaCodec硬编码一(H.264进行flv封装)

在前面Android平台下使用FFmpeg进行RTMP推流(摄像头推流)的文章中,介绍了如何使用FFmpeg进行H264编码和Rtmp推流。接下来讲分几篇文章来...

5763
来自专栏葡萄城控件技术团队

七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

通过第一天的学习之后,我们相信您已经对MVC有一些基本了解。 本节所讲的内容是在上节的基础之上,因此需要确保您是否掌握了上一节的内容。本章的目标是在今天学习结束...

2128
来自专栏后端之路

使用分页插件的后悔药(二)

背景 我们使用了pageHelper之后大部分的需求可以满足了 部分场景下不需要使用count等语句来做分页,只需要做sql查询 问题 小伙伴在使用了一段时间之...

2836
来自专栏青青天空树

安卓原生与hml交互(WebView基础)

在Android4.2以上可以直接使用@JavascriptInterface注解来声明,下面是在一个本地Java方法

1843
来自专栏Android知识点总结

1-AIV--使用ContentProvider获取短信

1162
来自专栏QQ音乐技术团队的专栏

JsBridge实现JavaScript和Java的互相调用

前端网页JavaScript(下文简称Js)和Java互相调用在手机应用中越来越常见,JsBridge是最常用的解决方案。 1. Js调用Java,Java调用...

5589
来自专栏Flutter知识集

Flutter 实践 MVVM

在做Android或iOS开发时,经常会了解到MVC,MVP和MVVM。MVVM在移动端一度被非常推崇,虽然也有不少反对的声音,不过MVVM确实是不错的设计架构...

1.5K3
来自专栏刘望舒

APK是如何被解析的?

在本系列的前面文章中,我介绍了PackageInstaller的初始化和安装APK过程、PMS处理APK的安装和PMS的创建过程,这些文章中经常会涉及到一个类,...

1893
来自专栏JackieZheng

探秘Tomcat——启动篇

tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container。具体请看下图: ? ...

4437

扫码关注云+社区