| | |
| | | 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; |
| | | |
| | |
| | | public class AppManagerUtils { |
| | | |
| | | private static AppManagerUtils appManagerUtils; |
| | | |
| | | private LoadingDialog loadingDialog; |
| | | |
| | | private AppManagerUtils() { |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 是否存在类名的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()) |
| | |
| | | * 结束所有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); |
| | |
| | | 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状态 |
| | | // */ |
| | |
| | | // 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); |
| | | } |
| | | |
| | | |
| | | } |