package cn.droidlover.xdroidmvp.kit;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
/**
* Created by wanglei on 2016/11/28.
*/
public class Kits {
public static class Package {
/**
* 获取版本号
*
* @param context
* @return
*/
public static int getVersionCode(Context context) {
PackageManager pManager = context.getPackageManager();
PackageInfo packageInfo = null;
try {
packageInfo = pManager.getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return packageInfo.versionCode;
}
/**
* 获取当前版本
*
* @param context
* @return
*/
public static String getVersionName(Context context) {
PackageManager pManager = context.getPackageManager();
PackageInfo packageInfo = null;
try {
packageInfo = pManager.getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return packageInfo.versionName;
}
/**
* 安装App
*
* @param context
* @param filePath
* @return
*/
public static boolean installNormal(Context context, String filePath) {
Intent i = new Intent(Intent.ACTION_VIEW);
java.io.File file = new java.io.File(filePath);
if (file == null || !file.exists() || !file.isFile() || file.length() <= 0) {
return false;
}
i.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
return true;
}
/**
* 卸载App
*
* @param context
* @param packageName
* @return
*/
public static boolean uninstallNormal(Context context, String packageName) {
if (packageName == null || packageName.length() == 0) {
return false;
}
Intent i = new Intent(Intent.ACTION_DELETE, Uri.parse(new StringBuilder().append("package:")
.append(packageName).toString()));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
return true;
}
/**
* 判断是否是系统App
*
* @param context
* @param packageName 包名
* @return
*/
public static boolean isSystemApplication(Context context, String packageName) {
if (context == null) {
return false;
}
PackageManager packageManager = context.getPackageManager();
if (packageManager == null || packageName == null || packageName.length() == 0) {
return false;
}
try {
ApplicationInfo app = packageManager.getApplicationInfo(packageName, 0);
return (app != null && (app.flags & ApplicationInfo.FLAG_SYSTEM) > 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return false;
}
/**
* 判断某个包名是否运行在顶层
*
* @param context
* @param packageName
* @return
*/
public static Boolean isTopActivity(Context context, String packageName) {
if (context == null || TextUtils.isEmpty(packageName)) {
return null;
}
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1);
if (tasksInfo == null || tasksInfo.isEmpty()) {
return null;
}
try {
return packageName.equals(tasksInfo.get(0).topActivity.getPackageName());
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 获取Meta-Data
*
* @param context
* @param key
* @return
*/
public static String getAppMetaData(Context context, String key) {
if (context == null || TextUtils.isEmpty(key)) {
return null;
}
String resultData = null;
try {
PackageManager packageManager = context.getPackageManager();
if (packageManager != null) {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null) {
if (applicationInfo.metaData != null) {
resultData = applicationInfo.metaData.getString(key);
}
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return resultData;
}
/**
* 判断当前应用是否运行在后台
*
* @param context
* @return
*/
public static boolean isApplicationInBackground(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskList = am.getRunningTasks(1);
if (taskList != null && !taskList.isEmpty()) {
ComponentName topActivity = taskList.get(0).topActivity;
if (topActivity != null && !topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
}
public static class Dimens {
public static float dpToPx(Context context, float dp) {
return dp * context.getResources().getDisplayMetrics().density;
}
public static float pxToDp(Context context, float px) {
return px / context.getResources().getDisplayMetrics().density;
}
public static int dpToPxInt(Context context, float dp) {
return (int) (dpToPx(context, dp) + 0.5f);
}
public static int pxToDpCeilInt(Context context, float px) {
return (int) (pxToDp(context, px) + 0.5f);
}
}
public static class Random {
public static final String NUMBERS_AND_LETTERS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static final String NUMBERS = "0123456789";
public static final String LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
public st