工作空间 v3.7.4.6版本的 MD5 值为:94c1c0052e9f2e949ae1349e6caf437b
以下内容为反编译后的 JsCallback.java 源代码,内容仅作参考
package com.zhizhangyi.platform.zwebview;
import android.webkit.WebView;
import com.xiaomi.mipush.sdk.Constants;
import java.lang.ref.WeakReference;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JsCallback {
private static final String CALLBACK_JS_FORMAT = "javascript:%s.callback(%d, %d %s);";
private boolean mCouldGoOn = true;
private int mIndex;
private String mInjectedName;
private int mIsPermanent;
private WeakReference<WebView> mWebViewRef;
public static class JsCallbackException extends Exception {
public JsCallbackException(String str) {
super(str);
}
}
public JsCallback(WebView webView, String str, int i) {
this.mWebViewRef = new WeakReference<>(webView);
this.mInjectedName = str;
this.mIndex = i;
}
private boolean isJavaScriptObject(Object obj) {
if ((obj instanceof JSONObject) || (obj instanceof JSONArray)) {
return true;
}
String obj2 = obj.toString();
try {
try {
new JSONObject(obj2);
} catch (JSONException unused) {
new JSONArray(obj2);
}
return true;
} catch (JSONException unused2) {
return false;
}
}
public void apply(Object... objArr) throws JsCallbackException {
if (this.mWebViewRef.get() != null) {
if (this.mCouldGoOn) {
StringBuilder sb = new StringBuilder();
for (Object obj : objArr) {
sb.append(Constants.ACCEPT_TIME_SEPARATOR_SP);
boolean z = obj instanceof String;
boolean isJavaScriptObject = isJavaScriptObject(obj);
if (z && !isJavaScriptObject) {
sb.append("\"");
}
sb.append(String.valueOf(obj));
if (z && !isJavaScriptObject) {
sb.append("\"");
}
}
String format = String.format(CALLBACK_JS_FORMAT, this.mInjectedName, Integer.valueOf(this.mIndex), Integer.valueOf(this.mIsPermanent), sb.toString());
LogUtils.d("JsCallBack", format);
this.mWebViewRef.get().loadUrl(format);
this.mCouldGoOn = this.mIsPermanent > 0;
return;
}
throw new JsCallbackException("the JsCallback isn't permanent,cannot be called more than once");
}
throw new JsCallbackException("the WebView related to the JsCallback has been recycled");
}
public void setPermanent(boolean z) {
this.mIsPermanent = z ? 1 : 0;
}
}