酷狗概念版 v2.5.5版本的 MD5 值为:782d327088fca4e58310f35a56f41319

以下内容为反编译后的 p.java 源代码,内容仅作参考


package com.kugou.android.app.flexowebview;

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.os.Build;
import android.util.Log;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.kugou.shortvideo.media.player.codec.MediaDecoder;

public class p {

    private static volatile p f9469c;

    private ValueCallback<Uri> f9470a;

    private ValueCallback<Uri[]> f9471b;

    private static String a(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 static synchronized p a() {
        p pVar;
        synchronized (p.class) {
            if (f9469c == null) {
                f9469c = new p();
            }
            pVar = f9469c;
        }
        return pVar;
    }

    private p() {
    }

    public void a(WebView webView, Context context) {
        if (webView == null) {
            return;
        }
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setSavePassword(false);
        settings.setTextZoom(100);
        settings.setAllowFileAccess(true);
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(true);
        settings.setUseWideViewPort(true);
        settings.setSupportMultipleWindows(false);
        settings.setLoadWithOverviewMode(true);
        settings.setAppCacheEnabled(true);
        settings.setDatabaseEnabled(true);
        settings.setDomStorageEnabled(true);
        settings.setAppCacheMaxSize(MediaDecoder.PTS_EOS);
        settings.setAppCachePath(context.getDir("appcache", 0).getPath());
        settings.setDatabasePath(context.getDir("databases", 0).getPath());
        settings.setGeolocationDatabasePath(context.getDir("geolocation", 0).getPath());
        settings.setPluginState(WebSettings.PluginState.ON_DEMAND);
        settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        if (Build.VERSION.SDK_INT >= 16) {
            settings.setAllowUniversalAccessFromFileURLs(true);
        }
        if (Build.VERSION.SDK_INT >= 11) {
            webView.removeJavascriptInterface("searchBoxJavaBridge_");
        }
        String userAgentString = settings.getUserAgentString();
        try {
            settings.setUserAgentString(userAgentString + ";webank/h5face;webank/1.0;netType:" + a(context) + ";appVersion:" + context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode + ";packageName:" + context.getPackageName());
        } catch (PackageManager.NameNotFoundException e2) {
            settings.setUserAgentString(userAgentString + ";webank/h5face;webank/1.0");
            e2.printStackTrace();
        }
    }

    public boolean a(int i, int i2, Intent intent) {
        if (i != 17) {
            return false;
        }
        if (this.f9470a == null && this.f9471b == null) {
            return true;
        }
        Uri data = (intent == null || i2 != -1) ? null : intent.getData();
        Uri[] uriArr = data == null ? null : new Uri[]{data};
        ValueCallback<Uri[]> valueCallback = this.f9471b;
        if (valueCallback != null) {
            valueCallback.onReceiveValue(uriArr);
            b(null);
        } else {
            this.f9470a.onReceiveValue(data);
            a((ValueCallback<Uri>) null);
        }
        return true;
    }

    public boolean a(ValueCallback<Uri> valueCallback, String str, Activity activity) {
        Log.d("faceVerify", "acceptType: " + str);
        if (!"video/*".equals(str) && !"video/webank".equals(str)) {
            return false;
        }
        a(valueCallback);
        a(activity);
        return true;
    }

    @TargetApi(21)
    public boolean a(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://ida.webank.com/")) {
            return false;
        }
        b(valueCallback);
        a(activity);
        return true;
    }

    private void a(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();
        }
    }

    private void a(ValueCallback<Uri> valueCallback) {
        this.f9470a = valueCallback;
    }

    private void b(ValueCallback<Uri[]> valueCallback) {
        this.f9471b = valueCallback;
    }
}