android 开发工具类,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;

}

/**

* 隐藏系统键盘

* 警告 必须是确定键盘显示时才能调用

*/

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 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 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 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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值