PSP Dragon Emulator v1.0版本的 MD5 值为:c6379fb6b63c27b6a7d2f2f6f6f51637

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


package com.airpush.injector.internal.common.utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.TrafficStats;
import android.os.AsyncTask;
import android.os.Build;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.WorkerThread;
import android.webkit.WebSettings;
import java.io.IOException;
import java.lang.ref.SoftReference;
import java.lang.reflect.Constructor;
import java.net.InetSocketAddress;
import java.net.Socket;
public class NetworkUtils {
    private static String cachedUserAgent;
    private static SoftReference<ConnectivityManager> connectivityManagerRef = new SoftReference<>(null);

    public interface InternetAvailableListener {
        void onResult(boolean z);
    }

    static boolean access$000() {
        return tryPingGoogle();
    }

    public static boolean isNetworkConnected(@NonNull Context context) {
        NetworkInfo activeNetworkInfo;
        ConnectivityManager connectivityManager = connectivityManagerRef.get();
        if (connectivityManager == null) {
            connectivityManager = (ConnectivityManager) context.getSystemService("connectivity");
            connectivityManagerRef = new SoftReference<>(connectivityManager);
        }
        return (connectivityManager == null || (activeNetworkInfo = connectivityManager.getActiveNetworkInfo()) == null || !activeNetworkInfo.isConnected()) ? false : true;
    }

    @MainThread
    public static void isInternetAvailable(Context context, final InternetAvailableListener internetAvailableListener) {
        if (!isNetworkConnected(context)) {
            internetAvailableListener.onResult(false);
        }
        new AsyncTask<Void, Void, Boolean>() {
            @Override
            public Boolean doInBackground(Void... voidArr) {
                return Boolean.valueOf(NetworkUtils.access$000());
            }

            @Override
            public void onPostExecute(Boolean bool) {
                InternetAvailableListener.this.onResult(bool.booleanValue());
            }
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
    }

    @WorkerThread
    public static boolean isInternetAvailable(Context context) {
        if (isNetworkConnected(context)) {
            return tryPingGoogle();
        }
        return false;
    }

    @WorkerThread
    private static boolean tryPingGoogle() {
        try {
            TrafficStats.setThreadStatsTag(Thread.currentThread().hashCode());
            Socket socket = new Socket();
            socket.connect(new InetSocketAddress("8.8.8.8", 53), 2000);
            socket.close();
            return true;
        } catch (IOException unused) {
            return false;
        }
    }

    public static String getUserAgent(Context context) {
        if (cachedUserAgent != null) {
            return cachedUserAgent;
        }
        if (Build.VERSION.SDK_INT >= 17) {
            cachedUserAgent = WebSettings.getDefaultUserAgent(context);
            return cachedUserAgent;
        }
        try {
            Class<?> cls = Class.forName("android.webkit.WebSettingsClassic");
            Constructor<?> declaredConstructor = cls.getDeclaredConstructor(Context.class, Class.forName("android.webkit.WebViewClassic"));
            declaredConstructor.setAccessible(true);
            cachedUserAgent = (String) cls.getMethod("getUserAgentString", new Class[0]).invoke(declaredConstructor.newInstance(context, null), new Object[0]);
            return cachedUserAgent;
        } catch (Exception unused) {
            cachedUserAgent = System.getProperty("http.agent");
            return cachedUserAgent;
        }
    }
}