AgentWeb Android和Js交互

最近在项目中遇到Android和JS的交互问题,第一次做,我和H5调了好几次,才调试好。泪奔ING

在这里记录一个Demo,防止以后忘记,小伙伴们也可以借鉴一下,有什么不对的,欢迎指正。(你可以说,我不一定听)

1.首先介绍一下,我用的是AgentWeb这个加载WebView的框架


AgentWeb 是一个高度封装的 Android WebView ,简单易用 , 带有进度条 、 支持文件上传 、 下载 、 简化 Javascript 通信 ,加强 Web 安全的库 。

// webview加载框架的依赖

    implementation'com.just.agentweb:agentweb:4.0.2' // (必选)

    implementation'com.just.agentweb:download:4.0.2' // (可选)

    implementation'com.just.agentweb:filechooser:4.0.2'// (可选)

具体我就不多做介绍了,你们去百度一下一大堆。我们主要介绍和JS交互的问题。


2.先准备一个html文件放在src_main下的assets文件下

Carson_Ho

// JS代码



3.android加载H5


AgentWeb Android和Js交互_第1张图片
mweb是LinearLayout


好了接下来才是重头戏,注意了不要眨眼睛



4.Android调用JS

mAgentWeb.getJsAccessEntrace().quickCallJs("callJS");


callJS  是H5写的方法,你要和H5的小伙伴商量好哦,不然就真是狗带了


5.JS调用Android

这个的话,我们只需要给H5的小伙伴留一下方法。需要两步

第一:写一个接口,在接口给H5留方法

public class AndroidInterface {

private AgentWeb agent;

private Context context;

public AndroidInterface(AgentWeb agent, Context context) {

this.agent = agent; this.context = context;

}

@JavascriptInterface

public String getAndroid() {

return "Android";

}


第二:把接口设置进去

mAgentWeb.getJsInterfaceHolder().addJavaObject("android", new AndroidInterface(mAgentWeb, this));


最后:JS通过下面的方法调用,就OK了

window.android.callAndroid();


完事了,第一次分享,希望可以帮助遇到这类问题的童鞋。

你可能感兴趣的:(AgentWeb Android和Js交互)