随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
1、
/**
* 获取指定程序下所有Action为Intent.ACTION_MAIN的Activity
*
* @param context
* 上下文对象
* @param pkg
* 包名
* @return 指定程序下所有Action为Intent.ACTION_MAIN的Activity的集合
*/
public static List<String> getActivities(Context context, String pkg) {
List<String> result = new ArrayList<String>();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.setPackage(pkg);
List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent, 0);
if (DataUtil.isEmpty(list)) {
return null;
}
for (ResolveInfo info : list) {
result.add(info.activityInfo.name);
}
return result;
}
2、
/**
* 获取指定已安装的APK的安装路径(如:/data/app/com.home.util-2.apk)
*
* @param context
* 上下文对象
* @param pkg
* 包名
* @return 指定APK的安装路径
*/
public static String getAppSourceDir(Context context, String pkg) {
PackageManager pm = context.getPackageManager();
List<ApplicationInfo> list = pm.getInstalledApplications(0);
if (DataUtil.isEmpty(list)) {
return null;
}
for (ApplicationInfo appInfo : list) {
if (appInfo.packageName.equals(pkg)) {
return appInfo.sourceDir;
}
}
return null;
}
3、
/**
* 泛型的集合转为数组
*
* @param cls
* 类模板
* @param list
* 源集合
* @return 转换后的数组
*/
@SuppressWarnings("unchecked")
public static <T> T[] listToArray(Class<?> cls, List<T> list) {
if (isEmpty(list)) {
return (T[]) Array.newInstance(cls, 0);
}
return list.toArray((T[]) Array.newInstance(cls, list.size()));
}
4、
/**
* 检测文本是否全为中文
*
* @param text
* 文本
* @return 全为中文返回true,否则返回false
*/
public static boolean isChinese(String text) {
if (isEmpty(text)) {
return false;
}
return text.matches("[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+");
}
5、
/**
* 检测文本中是否包含汉字
*
* @param text
* 文本
* @return 包含返回true,否则返回false
*/
public static boolean isHasChinese(String text) {
final String format = "[\\u4E00-\\u9FA5\\uF900-\\uFA2D]";
boolean result = false;
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(text);
result = matcher.find();
return result;
}
6、
/**
* 保存ListView的当前位置
*
* @param context
* 上下文对象
* @param lv
* ListView实例
*
*/
public static void saveListViewCurPos(Context context, ListView lv) {
int pos = lv.getFirstVisiblePosition();
View v = lv.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
SharedUtil.saveInt(context, Constant.DEFAULT_SHARE_NAME, "pos", pos);
SharedUtil.saveInt(context, Constant.DEFAULT_SHARE_NAME, "top", top);
}
/**
* 恢复ListView的之前位置
*
* @param context
* 上下文对象
* @param lv
* ListView实例
* @return 恢复成功返回true,否则返回false
*/
public static boolean resumeListViewPos(Context context, ListView lv) {
int pos = SharedUtil.getInt(context, Constant.DEFAULT_SHARE_NAME, "pos", -1);
int top = SharedUtil.getInt(context, Constant.DEFAULT_SHARE_NAME, "top", -1);
if (pos == -1 || top == -1) {
return false;
}
lv.setSelectionFromTop(pos, top);
return true;
}
7、
/**
* 获取手机ip地址
*
* @param context
* 上下文对象
* @return ip地址
*/
@SuppressWarnings("deprecation")
public static String getPhoneIp(Context context) {
int ip = getWifiManager(context).getConnectionInfo().getIpAddress();
return android.text.format.Formatter.formatIpAddress(ip);
}
8、
/**
* 文件夹排序(先文件夹排序后文件排序)
*
* @param files
* 文件数组
*/
public static void sortFiles(File[] files) {
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
boolean l1 = file1.isDirectory();
boolean l2 = file2.isDirectory();
if (l1 && !l2)
return -1;
else if (!l1 && l2)
return 1;
else {
return file1.getName().compareTo(file2.getName());
}
}
});
}