Android開發工具類
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; }
}</pre>
本文由用戶 f663x 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!