概要

UI通过本地Html呈现,交互功过JS方式处理,包括主动调用和被动调用(异步)。
JS交互实例参见https://www.jianshu.com/p/97f52819a19d

Java调用JS

  • android 4.4以下跟H5交互需要调用webview的loadUrl(javascript:方法名(参数))来实现调用js方法。如果需要网页获取返回值还需要网页调用安卓 @JavaScriptInterface 注解的方法才可以。
  • Android 4.4以上调用webview.evaluateJavascript(javascript:方法名(参数),new ValueCallback{
    public void onReciveValue(String value){}
    })来实现调用js方法,同时能够获取网页返回的数据。
Java代码
String payId = jsonObj.optString("payId");
JSONObject result = new JSONObject();
result.put("payId", payId);
String s= result.toString();
String function = "javaCallJsWithArgs";
String js = "javascript:" + function + "(" + s + ")";
mWebView.evaluateJavaScript(js, new ValueCallback<String>(){
    @Override
    public void onReceiveValue(String value){
    }
});

JS代码
<script>
function javaCallJsWithArgs(data){

}
</script>

JS调用Java

Java代码
webView.addJavascriptInterface(new MyJavascriptInterface(this), "uniObject");
public class MyJavascriptInterface {
    private Context context;

    public MyJavascriptInterface(Context context) {
        this.context = context;
    }
    @JavascriptInterface
    public String callFromJsWithArg(String src) {
    }
}
Js代码
var result = window.uniObject.callFromJsWithArg("");

其他

做了混淆,js总是无法调用java函数。所以需要在proguard文件做如下设置。

-keepclassmembersclass com.philofly.android.activity.WebActivity$JsInteration {
      public *;
}
-keepattributes  *JavascriptInterface*

接口说明

  • 通知是指Java到JS的调用
  • 命令是指JS到Java的调用

参数及返回值格式

参数和返回值都按json方式传递

参数名 是否必须 类型 说明
function string
data json 其他参数,命令不同内容不同

返回值中

接口

首页

  • 获取打印点信息命令(getPrinterInfo)
  • 获取入口信息命令(getUIEntry)
  • 获取打印机状态(getStatus)
  • 打印机状态通知(notifyStatus)
  • 回到首页(enterMainUI)

扫码认证(打印/复印/扫描)

  • 获取验证二维码命令(getAuthQrCode)
  • 认证成功通知(notifyAuthResult)

打印等待

  • 打印开始通知(notifyPrintStart)

正在打印

  • 正在打印通知(notifyPrintProgress)
  • 打印完成通知(notifyPrintFinished)

复印准备

  • 获取收费标准(getFeeStd)
  • 开始复印命令(startScan)

复印中

  • 已放好原稿命令(continueScan)
  • 结束放稿命令(stopScan)
  • 取消扫描(cancelScan)
  • 进稿器通知(notifyScanProgress)
  • 玻璃板通知(notifyScanNext)
  • 纸型选择通知(notifyScanSelect)
  • 纸型选择(selectScan);
  • 扫描完成通知(notifyScanFinished)

复印支付

  • 获取待支付信息命令(getPayInfo)
  • 获取预览文件(getPreviewFile)(证件复印/扫描中使用)
  • 完成支付(finishPay)
  • 支付完成通知(notifyPaid)

扫描准备

  • 获取收费标准(getFeeStd)
  • 开始扫描命令(startScan)

扫描中

扫描支付

扫描处理

  • 扫描处理完成通知(notifyFinished)

其他

  • 错误通知(notifyError)
  • 警告通知(notifyWarn)
文档更新时间: 2023-05-26 14:44   作者:方杰