Android开发工具类
2018-07-20 来源:open-open
public final class SystemTool { /** * 指定格式返回当前系统时间 */ public static String getDataTime(String format) { SimpleDateFormat df = new SimpleDateFormat(format); return df.format(new Date()); } /** * 返回当前系统时间(格式以HH:mm形式) */ public static String getDataTime() { return getDataTime("HH:mm"); } /** * 获取手机IMEI码 */ public static String getPhoneIMEI(Context cxt) { TelephonyManager tm = (TelephonyManager) cxt.getSystemService(Context.TELEPHONY_SERVICE); return tm.getDeviceId(); } /** * 获取手机系统SDK版本 * * @return 如API 17 则返回 17 */ public static int getSDKVersion() { return android.os.Build.VERSION.SDK_INT; } /** * 获取系统版本 * * @return 形如2.3.3 */ public static String getSystemVersion() { return android.os.Build.VERSION.RELEASE; } /** * 调用系统发送短信 */ public static void sendSMS(Context cxt, String smsBody) { Uri smsToUri = Uri.parse("smsto:"); Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); intent.putExtra("sms_body", smsBody); cxt.startActivity(intent); } /** * 判断网络是否连接 */ public static boolean checkNet(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = cm.getActiveNetworkInfo(); return info != null;// 网络是否连接 } /** * 判断是否为wifi联网 */ public static boolean isWiFi(Context cxt) { ConnectivityManager cm = (ConnectivityManager) cxt.getSystemService(Context.CONNECTIVITY_SERVICE); // wifi的状态:ConnectivityManager.TYPE_WIFI // 3G的状态:ConnectivityManager.TYPE_MOBILE State state = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); return State.CONNECTED == state; } /** * 隐藏系统键盘 <br> * <b>警告</b> 必须是确定键盘显示时才能调用 */ public static void hideKeyBoard(Activity aty) { ((InputMethodManager) aty.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(aty.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } /** * 判断当前应用程序是否后台运行 */ public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.processName.equals(context.getPackageName())) { if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) { // 后台运行 return true; } else { // 前台运行 return false; } } } return false; } /** * 判断手机是否处理睡眠 */ public static boolean isSleeping(Context context) { KeyguardManager kgMgr = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); boolean isSleeping = kgMgr.inKeyguardRestrictedInputMode(); return isSleeping; } /** * 安装apk * * @param context * @param file */ public static void installApk(Context context, File file) { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setType("application/vnd.android.package-archive"); intent.setData(Uri.fromFile(file)); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } /** * 获取当前应用程序的版本号 */ public static String getAppVersion(Context context) { String version = "0"; try { version = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName; } catch (PackageManager.NameNotFoundException e) { throw new KJException(SystemTool.class.getName() + "the application not found"); } return version; } /** * 回到home,后台运行 */ public static void goHome(Context context) { Intent mHomeIntent = new Intent(Intent.ACTION_MAIN); mHomeIntent.addCategory(Intent.CATEGORY_HOME); mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); context.startActivity(mHomeIntent); } /** * 获取应用签名 * * @param context * @param pkgName */ public static String getSign(Context context, String pkgName) { try { PackageInfo pis = context.getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); return hexdigest(pis.signatures[0].toByteArray()); } catch (NameNotFoundException e) { throw new KJException(SystemTool.class.getName() + "the " + pkgName + "'s application not found"); } } /** * 将签名字符串转换成需要的32位签名 */ private static String hexdigest(byte[] paramArrayOfByte) { final char[] hexDigits = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102 }; try { MessageDigest localMessageDigest = MessageDigest.getInstance("MD5"); localMessageDigest.update(paramArrayOfByte); byte[] arrayOfByte = localMessageDigest.digest(); char[] arrayOfChar = new char[32]; for (int i = 0, j = 0;; i++, j++) { if (i >= 16) { return new String(arrayOfChar); } int k = arrayOfByte[i]; arrayOfChar[j] = hexDigits[(0xF & k >>> 4)]; arrayOfChar[++j] = hexDigits[(k & 0xF)]; } } catch (Exception e) {} return ""; } /** * 获取设备的可用内存大小 * * @param cxt * 应用上下文对象context * @return 当前内存大小 */ public static int getDeviceUsableMemory(Context cxt) { ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE); MemoryInfo mi = new MemoryInfo(); am.getMemoryInfo(mi); // 返回当前系统的可用内存 return (int) (mi.availMem / (1024 * 1024)); } /** * 清理后台进程与服务 * * @param cxt * 应用上下文对象context * @return 被清理的数量 */ public static int gc(Context cxt) { long i = getDeviceUsableMemory(cxt); int count = 0; // 清理掉的进程数 ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE); // 获取正在运行的service列表 List<RunningServiceInfo> serviceList = am.getRunningServices(100); if (serviceList != null) for (RunningServiceInfo service : serviceList) { if (service.pid == android.os.Process.myPid()) continue; try { android.os.Process.killProcess(service.pid); count++; } catch (Exception e) { e.getStackTrace(); continue; } } // 获取正在运行的进程列表 List<RunningAppProcessInfo> processList = am.getRunningAppProcesses(); if (processList != null) for (RunningAppProcessInfo process : processList) { // 一般数值大于RunningAppProcessInfo.IMPORTANCE_SERVICE的进程都长时间没用或者空进程了 // 一般数值大于RunningAppProcessInfo.IMPORTANCE_VISIBLE的进程都是非可见进程,也就是在后台运行着 if (process.importance > RunningAppProcessInfo.IMPORTANCE_VISIBLE) { // pkgList 得到该进程下运行的包名 String[] pkgList = process.pkgList; for (String pkgName : pkgList) { try { am.killBackgroundProcesses(pkgName); count++; } catch (Exception e) { // 防止意外发生 e.getStackTrace(); continue; } } } } //"清理了" + (getDeviceUsableMemory(cxt) - i) + "M内存"; return count; } }
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
下一篇: ImageView加载网络图片
最新资讯
热门推荐