package com.xiecc.seeWeather.common.utils; import android.annotation.SuppressLint; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.text.TextUtils; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.ViewConfiguration; import com.xiecc.seeWeather.R; import com.xiecc.seeWeather.component.PLog; import java.io.Closeable; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; public class Util { /** * 获取版本号 * * @return 当前应用的版本号 */ public static String getVersion(Context context) { try { PackageManager manager = context.getPackageManager(); PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0); return info.versionName; } catch (Exception e) { e.printStackTrace(); return context.getString(R.string.can_not_find_version_name); } } /** * @return 版本号 */ public static int getVersionCode(Context context) { try { PackageManager manager = context.getPackageManager(); PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0); return info.versionCode; } catch (Exception e) { e.printStackTrace(); return 0; } } /** * 只关注是否联网 */ public static boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mNetworkInfo != null) { return mNetworkInfo.isAvailable(); } } return false; } /** * 判断当前日期是星期几 * * @param pTime 修要判断的时间 * @return dayForWeek 判断结果 * @Exception 发生异常 */ public static String dayForWeek(String pTime) throws Exception { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c.setTime(format.parse(pTime)); int dayForWeek; String week = ""; dayForWeek = c.get(Calendar.DAY_OF_WEEK); switch (dayForWeek) { case 1: week = "星期日"; break; case 2: week = "星期一"; break; case 3: week = "星期二"; break; case 4: week = "星期三"; break; case 5: week = "星期四"; break; case 6: week = "星期五"; break; case 7: week = "星期六"; break; } return week; } /** * 安全的 String 返回 * * @param prefix 默认字段 * @param obj 拼接字段 (需检查) */ public static String safeText(String prefix, String obj) { if (TextUtils.isEmpty(obj)) return ""; return TextUtils.concat(prefix, obj).toString(); } public static String safeText(String msg) { if (null == msg) { return ""; } return safeText("", msg); } /** * 天气代码 100 为晴 101-213 500-901 为阴 300-406为雨 * * @param code 天气代码 * @return 天气情况 */ public static String getWeatherType(int code) { if (code == 100) { return "晴"; } if ((code >= 101 && code <= 213) || (code >= 500 && code <= 901)) { return "阴"; } if (code >= 300 && code <= 406) { return "雨"; } return "错误"; } /** * 匹配掉错误信息 */ public static String replaceCity(String city) { city = safeText(city).replaceAll("(?:省|市|自治区|特别行政区|地区|盟)", ""); return city; } /** * 匹配掉无关信息 */ public static String replaceInfo(String city) { city = safeText(city).replace("API没有", ""); return city; } /** * Java 中有一个 Closeable 接口,标识了一个可关闭的对象,它只有一个 close 方法. */ public static void closeQuietly(Closeable closeable) { if (null != closeable) { try { closeable.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 获取顶部status bar 高度 */ public static int getStatusBarHeight(Activity mActivity) { Resources resources = mActivity.getResources(); int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android"); int height = resources.getDimensionPixelSize(resourceId); PLog.i("Status height:" + height); return height; } /** * 获取底部 navigation bar 高度 */ public static int getNavigationBarHeight(Activity mActivity) { Resources resources = mActivity.getResources(); int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); int height = resources.getDimensionPixelSize(resourceId); PLog.i("Navi height:" + height); return height; } /** * * @param context * @param dipValue * @return */ public static int dip2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } @SuppressLint("NewApi") public static boolean checkDeviceHasNavigationBar(Context activity) { //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar boolean hasMenuKey = ViewConfiguration.get(activity) .hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap .deviceHasKey(KeyEvent.KEYCODE_BACK); return !hasMenuKey && !hasBackKey; } public static void copyToClipboard(String info, Context context) { ClipboardManager manager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); ClipData clipData = ClipData.newPlainText("msg", info); manager.setPrimaryClip(clipData); ToastUtil.showShort(String.format("[%s] 已经复制到剪切板啦( •̀ .̫ •́ )✧", info)); } }