Android和H5交互

1 篇文章 0 订阅
1 篇文章 0 订阅

一、应用场景

移动端接入一个H5的文档编辑器。当需要退出编辑页面的时候判断是否需要保存,执行保存操作成功后退出页面,保存失败的话弹窗提示是否重试。这里面需要用到的交互有:

  • Android询问H5文档是否有改动
  • H5告知Android是否有改动,Android根据告知选择是否显示保存弹窗
  • Android调用H5的保存方法
  • H5告知Android文档是否保存成功,Android根据告知选择是退出页面还是显示重试弹窗

二、核心功能

需要实现上述功能,落实到代码层面上就是实现:

  • Android调用H5的方法
  • H5调用Android方法。

三、Android调用H5的方法

Android中调用JS方法:customFunction:

mWebView.loadUrl("javascript:customFunction()");

当然在这之前需要先设置WebView支持JS。

WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);

四、H5调用Android的方法

WebView依旧是提供了相应的方法:

mWebView.addJavascriptInterface(new JsInterface(this), "android");
public class JsInterface {

    private Context mContext;

    public JsInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void passValue(String value) {
        androidText.setText(dataFormat.format(new Date()) + "\n接收到来自H5的信息:" + value);
    }
}

addJavascriptInterface需要Android 4.2以上,它的俩个参数,第一个参数为提供给JS访问的对象,第二个参数为对象暴露在JS中的名称。JS可以使用该名称,访问到这个对象,进而调用对象中的方法。
在暴露给JS的对象中添加了@JavascriptInterface注解的方法,可以直接在JS中被调用。这里也给出JS调用的示例:

<script>
function passValue1(value) {
    window:android.passValue(value);
}
</script>

其中androidaddJavascriptInterface方法的第二个参数值,passValue为暴露给JS的对象中添加了@JavascriptInterface注解的方法名。

五、DEMO下载

https://github.com/zhufeng1222/JavascriptDemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值