agentWeb Android 端的集成 和具体使用方法

 

1.集成

implementation 'com.just.agentweb:agentweb:4.1.2'

2.布局

 
  1. android:layout_width="match_parent"

  2. android:layout_height="match_parent"

  3. android:orientation="vertical">

 
  1. android:id="@+id/web"

  2. android:scrollbars="none"

  3. android:orientation="vertical"

  4. android:layout_below="@+id/ly_title"

  5. android:layout_width="match_parent"

  6. android:layout_height="match_parent"/>

3.Java代码

 
  1. private LinearLayout weblayout;

  2. private AgentWeb agentWeb;

weblayout = findViewById(R.id.web);
 
  1. agentWeb = AgentWeb.with(this)

  2. .setAgentWebParent((LinearLayout) weblayout, new LinearLayout.LayoutParams(-1, -1))//在父布局文件内找到web

  3. .useDefaultIndicator()

  4. .createAgentWeb()

  5. .ready()

  6. .go(url);

  7.  
  8. //允许js互调(android 固定值,new AndroidInterface 自己定义的接口)

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

 
  1. h5 调android:

  2.  
  3. AndroidInterface 写法如下:

 
  1. public class AndroidInterface {

  2. private AgentWeb agent;

  3. private Context context;

  4. private WebJsInterfaceCallback interfaceCallback;

  5. private String TAG = "AndroidInterfaceWeb";

  6. public AndroidInterface(AgentWeb agent, Context context, WebJsInterfaceCallback interfaceCallback) {

  7. this.agent = agent;

  8. this.context = context;

  9. this.interfaceCallback = interfaceCallback;

  10. }

  11.  
  12.  
 
  1. //定义h5要调用的本地方法

  2. @JavascriptInterface

  3. public void Android_BuyVip(String methodname, String parms) {

  4. switch (methodname) {

  5. //回调方法名

  6. case "tobuy":

  7. if (interfaceCallback != null) {

  8. interfaceCallback.tobuy(parms);

  9. }

  10. break;

  11. }

  12. }

 
  1. /回調函数

  2. public interface WebJsInterfaceCallback {

  3.  
  4. //获取h5传递的数据的方法回调

  5. void tobuy(String parms);

  6.  
  7. }

  8. }

页面实现AndroidInterface.WebJsInterfaceCallback

public class Activity implements AndroidInterface.WebJsInterfaceCallback {

@Override public void tobuy(String string) {
//string h5传来的参数
}
}

android  调h5

agentWeb.getJsAccessEntrace().quickCallJs("androidpay");//androidpay()h5里的方法

注:具体项目中使用出现白屏现象,查看demo没有找到问题  后来发现更换根布局为 RelativeLayout 白屏现象消失,后续查找具体原因.

你可能感兴趣的:(web)