wjc
2024-12-02 f50e8e60e9da99e4f69d8ab76810dc7e5fb448bc
app/src/main/java/com/hdl/photovoltaic/utils/AppManagerUtils.java
@@ -4,18 +4,11 @@
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.widget.LoadingDialog;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Stack;
@@ -28,6 +21,8 @@
public class AppManagerUtils {
    private static AppManagerUtils appManagerUtils;
    private LoadingDialog loadingDialog;
    private AppManagerUtils() {
    }
@@ -104,6 +99,20 @@
    }
    /**
     * 是否存在类名的Activity
     */
    public boolean existsActivity(Class<?>... args) {
        for (Activity activity : activityStack) {
            for (Class<?> cls : args) {
                if (activity.getClass().equals(cls)) {
                    return true;
                }
            }
        }
        return false;
    }
    /**
     * 指定一个类名,从指定类名开始移除后面所有Activity
     *
     * @param className   Activity-类名(activity.getClass().getName())
@@ -146,6 +155,9 @@
     * 结束所有Activity
     */
    public void finishAllActivity() {
        if (activityStack == null) {
            return;
        }
        for (int i = 0, size = activityStack.size(); i < size; i++) {
            if (null != activityStack.get(i)) {
                Activity activity = activityStack.get(i);
@@ -165,6 +177,64 @@
        return activityStack.size();
    }
    /**
     * 获取当前的Activity
     *
     * @return -
     */
    public Activity getLastActivity() {
        if (activityStack.size() > 0) {
            return activityStack.get(activityStack.size() - 1);
        }
        return null;
    }
    /**
     * 获取LoadingDialog
     *
     * @return LoadingDialog
     */
    public LoadingDialog getLoadingDialog() {
        Activity activity = getLastActivity();
        if (loadingDialog == null && activity != null) {
            loadingDialog = new LoadingDialog(activity, R.style.Custom_Dialog);
        }
        return loadingDialog;
    }
    /**
     * 开始Loading
     */
    public void showLoading() {
        getLoadingDialog().start();
    }
    /**
     * 开始Loading
     *
     * @param mes 自定义文本
     */
    public void showLoading(String mes) {
        getLoadingDialog().start();
        getLoadingDialog().setText(mes);
    }
    /**
     * 停止隐藏Loading
     */
    public void hideLoading() {
        HdlThreadLogic.runMainThread(new Runnable() {
            @Override
            public void run() {
                if (loadingDialog != null && loadingDialog.isShowing()) {
                    loadingDialog.stop();
                }
            }
        }, null, null);
    }
//    /**
//     * 判断当前应用是否是debug状态
//     */
@@ -176,56 +246,6 @@
//            return false;
//        }
//    }
    /**
     * 获得IP地址,分为两种情况:
     * 一:是wifi下;
     * 二:是移动网络下;
     */
    public String getIPAddress(Context context) {
        NetworkInfo info = ((ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
        if (info != null && info.isConnected()) {
            if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//当前使用2G/3G/4G网络
                try {
                    //Enumeration<NetworkInterface> en=NetworkInterface.getNetworkInterfaces();
                    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                        NetworkInterface intf = en.nextElement();
                        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                            InetAddress inetAddress = enumIpAddr.nextElement();
                            if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                                return inetAddress.getHostAddress();
                            }
                        }
                    }
                } catch (SocketException e) {
                    e.printStackTrace();
                }
            } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前使用无线网络
                WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                //调用方法将int转换为地址字符串
                String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址
                return ipAddress;
            }
        } else {
            //当前无网络连接,请在设置中打开网络
        }
        return null;
    }
    /**
     * 将得到的int类型的IP转换为String类型
     *
     * @param ip int类型
     * @return -
     */
    public static String intIP2StringIP(int ip) {
        return (ip & 0xFF) + "." +
                ((ip >> 8) & 0xFF) + "." +
                ((ip >> 16) & 0xFF) + "." +
                (ip >> 24 & 0xFF);
    }
}