工作空间 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;
    }
}