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文件下

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Carson_Ho</title>

// JS代码

<script>

// Android需要调用的方法

function callJS(){

alert("Android调用了JS的callJS方法");

}

</script>

</head>

</html>



3.android加载H5


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();


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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容