zoukankan      html  css  js  c++  java
  • Android 软件管理工具类Utils

                          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 }
  • 相关阅读:
    【TensorFlow】tf.nn.max_pool实现池化操作
    nginx页面不能正常访问排除方法
    Nginx启动错误:error while loading shared libraries: libpcre.so.1
    解决:make:cc 命令未找到的解决方法
    spring mvc:练习:表单验证(javaConfig配置和注解)
    spring mvc:练习:javaConfig配置和注解
    SpringMvc中的校验框架@valid和@validation的概念及相关使用 和BindingResult bindingResult
    springmvc的@Validated/@Valid注解使用和BindingResult bindingResult
    spring MVC注解深入研究
    spring mvc: 注解和JavaConfig实例
  • 原文地址:https://www.cnblogs.com/hbtmwangjin/p/8081716.html
Copyright © 2011-2022 走看看