Android 软件管理工具类Utils
1 /** 2 * Created by uilubo on 2015/9/30. 3 * 工具类 4 */ 5 public class Utils { 6 7 public static List<AppInfo> getAppList(Context context){ 8 // 返回值集合 9 List<AppInfo> list = new ArrayList<AppInfo>(); 10 11 // 实例化包管理器 12 PackageManager pm = context.getPackageManager(); 13 14 // 获取所有已经安装的应用信息 15 List<PackageInfo> pList = pm.getInstalledPackages(0); 16 17 // 遍历集合 18 for(int i = 0; i<pList.size(); i++){ 19 // 拿到元素 20 PackageInfo packageInfo = pList.get(i); 21 //判断是否是第三方应用 同时 不包含当前的应用的包名 22 if(isThirdPartyApp(packageInfo.applicationInfo) && 23 !packageInfo.packageName.equals(context.getPackageName())) { 24 // 填充实体类 25 AppInfo app = new AppInfo(); 26 // 获取应用名 27 app.packageName = packageInfo.packageName; 28 app.versionName = packageInfo.versionName; 29 app.versionCode = packageInfo.versionCode; 30 app.insTime = packageInfo.firstInstallTime; 31 app.updTime = packageInfo.lastUpdateTime; 32 app.appName = (String) packageInfo.applicationInfo.loadLabel(pm); 33 // 获取图标 34 app.icon = packageInfo.applicationInfo.loadIcon(pm); 35 // 计算程序的大小 36 String dir = packageInfo.applicationInfo.publicSourceDir; 37 long byteSize = new File(dir).length(); 38 // 实际大小 39 app.byteSize = byteSize; 40 // 格式化好的大小 41 app.size = getSize(byteSize); 42 list.add(app); 43 } 44 } 45 return list; 46 } 47 48 49 50 /** 51 * 判断应用是否是第三方应用 52 * @param appInfo 53 * @return 54 */ 55 public static boolean isThirdPartyApp(ApplicationInfo appInfo) { 56 boolean flag = false; 57 if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { 58 // 可更新的系统应用 59 flag = true; 60 } 61 else if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { 62 // 非系统应用 63 flag = true; 64 } 65 return flag; 66 } 67 68 69 70 /*获取文件大小*/ 71 public static String getSize(long size){ 72 return new DecimalFormat("0.##").format(size * 1.0/(1024*1024)); 73 } 74 75 76 77 /*获取时间*/ 78 public static String getTime(long millis){ 79 Date date = new Date(millis); 80 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 81 return sdf.format(date); 82 } 83 84 85 /* 86 *打开包文件 87 */ 88 public static void openPackage(Context context, String packageName){ 89 Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); 90 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 91 context.startActivity(intent); 92 } 93 94 95 /*卸载APK安装包*/ 96 public static void uninstallApk(Activity context, String packageName, int requestCode){ 97 Uri uri= Uri.parse("package:"+packageName); 98 Intent intent = new Intent(Intent.ACTION_DELETE,uri); 99 context.startActivityForResult(intent,requestCode); 100 101 } 102 103 104 public static List<AppInfo> getSearchResult(List<AppInfo> list,String key){ 105 List<AppInfo> result = new ArrayList<AppInfo>(); 106 for (int i= 0; i < list.size(); i++){ 107 AppInfo app = list.get(i); 108 if (app.appName.toLowerCase().contains(key.toLowerCase())){ 109 result.add(app); 110 } 111 } 112 return result; 113 } 114 115 116 117 public static SpannableStringBuilder highLightText(String str, String key){ 118 int start = str.toLowerCase().indexOf(key.toLowerCase());// 不区分大小写 119 int end = start + key.length(); 120 121 SpannableStringBuilder sb = new SpannableStringBuilder(str); 122 sb.setSpan( 123 new ForegroundColorSpan(Color.RED), // 前景颜色 124 start, // 起始坐标 125 end, // 终止坐标 126 Spannable.SPAN_EXCLUSIVE_INCLUSIVE 127 ); 128 129 return sb; 130 } 131 132 133 134 }