工作空间 v3.7.4.6版本的 MD5 值为:94c1c0052e9f2e949ae1349e6caf437b
以下内容为反编译后的 WBH5FaceVerifySDK.java 源代码,内容仅作参考
package com.uusafe.h5app.library.utils;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.util.Log;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class WBH5FaceVerifySDK {
private static final String NETWORK_2G = "NETWORK_2G";
private static final String NETWORK_3G = "NETWORK_3G";
private static final String NETWORK_4G = "NETWORK_4G";
private static final String NETWORK_MOBILE = "NETWORK_MOBILE";
private static final String NETWORK_NONE = "NETWORK_NONE";
private static final String NETWORK_WIFI = "NETWORK_WIFI";
private static final int VIDEO_REQUEST = 17;
private static WBH5FaceVerifySDK instance;
private ValueCallback<Uri[]> mUploadCallbackAboveL;
private ValueCallback<Uri> mUploadMessage;
private WBH5FaceVerifySDK() {
}
public static synchronized WBH5FaceVerifySDK getInstance() {
WBH5FaceVerifySDK wBH5FaceVerifySDK;
synchronized (WBH5FaceVerifySDK.class) {
if (instance == null) {
instance = new WBH5FaceVerifySDK();
}
wBH5FaceVerifySDK = instance;
}
return wBH5FaceVerifySDK;
}
private static String getNetWorkState(Context context) {
NetworkInfo activeNetworkInfo;
NetworkInfo.State state;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService("connectivity");
if (connectivityManager != null && (activeNetworkInfo = connectivityManager.getActiveNetworkInfo()) != null && activeNetworkInfo.isAvailable()) {
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(1);
if (networkInfo != null && (state = networkInfo.getState()) != null && (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING)) {
return NETWORK_WIFI;
}
NetworkInfo networkInfo2 = connectivityManager.getNetworkInfo(0);
if (networkInfo2 != null) {
NetworkInfo.State state2 = networkInfo2.getState();
String subtypeName = networkInfo2.getSubtypeName();
if (state2 != null && (state2 == NetworkInfo.State.CONNECTED || state2 == NetworkInfo.State.CONNECTING)) {
switch (activeNetworkInfo.getSubtype()) {
case 1:
case 2:
case 4:
case 7:
case 11:
return NETWORK_2G;
case 3:
case 5:
case 6:
case 8:
case 9:
case 10:
case 12:
case 14:
case 15:
return NETWORK_3G;
case 13:
return NETWORK_4G;
default:
return (subtypeName.equalsIgnoreCase("TD-SCDMA") || subtypeName.equalsIgnoreCase("WCDMA") || subtypeName.equalsIgnoreCase("CDMA2000")) ? NETWORK_3G : NETWORK_MOBILE;
}
}
}
}
return NETWORK_NONE;
}
public boolean receiveH5FaceVerifyResult(int i, int i2, Intent intent) {
if (i == 17) {
if (this.mUploadMessage == null && this.mUploadCallbackAboveL == null) {
return true;
}
Uri data = (intent == null || i2 != -1) ? null : intent.getData();
Uri[] uriArr = data == null ? null : new Uri[]{data};
ValueCallback<Uri[]> valueCallback = this.mUploadCallbackAboveL;
if (valueCallback != null) {
valueCallback.onReceiveValue(uriArr);
setmUploadCallbackAboveL(null);
} else {
this.mUploadMessage.onReceiveValue(data);
setmUploadMessage(null);
}
return true;
}
return false;
}
public void recordVideo(Activity activity) {
try {
Intent intent = new Intent("android.media.action.VIDEO_CAPTURE");
intent.putExtra("android.intent.extra.videoQuality", 1);
intent.addFlags(1);
intent.putExtra("android.intent.extras.CAMERA_FACING", 1);
activity.startActivityForResult(intent, 17);
} catch (Exception e2) {
e2.printStackTrace();
}
}
@TargetApi(21)
public boolean recordVideoForApi21(WebView webView, ValueCallback<Uri[]> valueCallback, Activity activity, WebChromeClient.FileChooserParams fileChooserParams) {
Log.d("faceVerify", "accept is " + fileChooserParams.getAcceptTypes()[0] + "---url---" + webView.getUrl());
if ("video/webank".equals(fileChooserParams.getAcceptTypes()[0]) || webView.getUrl().startsWith("https://miniprogram-kyc.tencentcloudapi.com") || webView.getUrl().startsWith("https://ida.webank.com")) {
setmUploadCallbackAboveL(valueCallback);
recordVideo(activity);
return true;
}
return false;
}
public boolean recordVideoForApiBelow21(ValueCallback<Uri> valueCallback, String str, Activity activity) {
if ("video/webank".equals(str)) {
setmUploadMessage(valueCallback);
recordVideo(activity);
return true;
}
return false;
}
public void setWebViewSettings(WebSettings webSettings, Context context) {
String userAgentString = webSettings.getUserAgentString();
try {
webSettings.setUserAgentString(userAgentString + ";webank/h5face;webank/1.0;netType:" + getNetWorkState(context) + ";appVersion:" + context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode + ";packageName:" + context.getPackageName());
} catch (PackageManager.NameNotFoundException e2) {
webSettings.setUserAgentString(userAgentString + ";webank/h5face;webank/1.0");
e2.printStackTrace();
}
}
public void setmUploadCallbackAboveL(ValueCallback<Uri[]> valueCallback) {
this.mUploadCallbackAboveL = valueCallback;
}
public void setmUploadMessage(ValueCallback<Uri> valueCallback) {
this.mUploadMessage = valueCallback;
}
}