JsInterfaceHandler.java
2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.polysoft.nafmii.webview;
import android.app.Activity;
import android.text.TextUtils;
import com.alibaba.fastjson.JSONObject;
import com.polysoft.nafmii.bean.Result;
import com.tencent.smtt.sdk.WebView;
public class JsInterfaceHandler {
private final Activity mActivity;
private final WebView mWebview;
private String jsMethodName;
public JsInterfaceHandler(WebviewHandler handler) {
this.mActivity = handler.getFragment().getActivity();
this.mWebview = handler.getWebview();
}
public void parse(String params, JsHandle jsHandle) {
// try {
JSONObject obj = JSONObject.parseObject(params);
this.jsMethodName = obj.getString("jsMethodName");
JSONObject data = obj.getJSONObject("data");
jsHandle.handle(data, new JsInterfaceImpl());
// } catch (Exception e) {
// e.printStackTrace();
// this.sendMessage2Js(Result.fail("接口调用异常").toString());
// }
}
private void sendMessage2Js(String json) {
if (TextUtils.isEmpty(jsMethodName)) {
return;
}
if ("'main'".equals(Thread.currentThread().getName())) {
JSApi.callJs(this.mWebview, jsMethodName, json);
return;
}
this.mActivity.runOnUiThread(() -> JSApi.callJs(this.mWebview, jsMethodName, json));
}
class JsInterfaceImpl implements JsInterface {
@Override
public void callJs(Result result) {
sendMessage2Js(result.toString());
}
@Override
public void success(Object obj) {
this.callJs(Result.success(obj));
}
@Override
public void fail(String statusText) {
this.callJs(Result.fail(statusText));
}
}
public interface JsHandle {
void handle(JSONObject data, JsInterface js);
}
public interface JsInterface {
void callJs(Result result);
void success(Object obj);
void fail(String statusText);
}
}