1.集成
implementation 'com.just.agentweb:agentweb:4.1.2'
2.布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LnearLayout
android:id="@+id/web"
android:scrollbars="none"
android:orientation="vertical"
android:layout_below="@+id/ly_title"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
3.Java代码
private LinearLayout weblayout;
private AgentWeb agentWeb;
weblayout = findViewById(R.id.web);
agentWeb = AgentWeb.with(this)
.setAgentWebParent((LinearLayout) weblayout, new LinearLayout.LayoutParams(-1, -1))//在父布局文件内找到web
.useDefaultIndicator()
.createAgentWeb()
.ready()
.go(url);
//允许js互调(android 固定值,new AndroidInterface 自己定义的接口)
agentWeb.getJsInterfaceHolder().addJavaObject("android", new AndroidInterface(agentWeb, this, this));
h5 调android:
AndroidInterface 写法如下:
public class AndroidInterface {
private AgentWeb agent;
private Context context;
private WebJsInterfaceCallback interfaceCallback;
private String TAG = "AndroidInterfaceWeb";
public AndroidInterface(AgentWeb agent, Context context, WebJsInterfaceCallback interfaceCallback) {
this.agent = agent;
this.context = context;
this.interfaceCallback = interfaceCallback;
}
//定义h5要调用的本地方法
@JavascriptInterface
public void Android_BuyVip(String methodname, String parms) {
switch (methodname) {
//回调方法名
case "tobuy":
if (interfaceCallback != null) {
interfaceCallback.tobuy(parms);
}
break;
}
}
/回調函数
public interface WebJsInterfaceCallback {
//获取h5传递的数据的方法回调
void tobuy(String parms);
}
}
页面实现AndroidInterface.WebJsInterfaceCallback
public class Activity implements AndroidInterface.WebJsInterfaceCallback {
@Override public void tobuy(String string) {
//string h5传来的参数
}
}
android 调h5
agentWeb.getJsAccessEntrace().quickCallJs("androidpay");//androidpay()h5里的方法
有不懂的直接留言就行