package com.zenglb.baselib.jsbridge; import android.os.Handler; import android.os.Looper; import android.webkit.WebView; import org.json.JSONObject; import java.lang.ref.WeakReference; /** * Native 回调JS 注册的callback */ public class Callback { private static Handler mHandler = new Handler(Looper.getMainLooper()); //格式化一下 private static final String CALLBACK_JS_FORMAT = "javascript:JSBridge.onFinish('%s', %s);"; private String mPort; private WeakReference<WebView> mWebViewRef; public Callback(WebView view, String port) { mWebViewRef = new WeakReference<>(view); mPort = port; } /** * 最终返回给JS * * @param jsonObject */ public void apply(JSONObject jsonObject) { final String execJs = String.format(CALLBACK_JS_FORMAT, mPort, String.valueOf(jsonObject)); if (mWebViewRef != null && mWebViewRef.get() != null) { mHandler.post(() -> { //Java要调用js的方法,是非常容易做到的,使用WebView.loadUrl(“JavaScript:function()”)即可 mWebViewRef.get().loadUrl(execJs); }); } } }