概要
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 作者:方杰