Android 软件管理工具类Utils
 /**
* Created by uilubo on 2015/9/30.
* 工具类
*/
public class Utils { public static List<AppInfo> getAppList(Context context){
// 返回值集合
List<AppInfo> list = new ArrayList<AppInfo>(); // 实例化包管理器
PackageManager pm = context.getPackageManager(); // 获取所有已经安装的应用信息
List<PackageInfo> pList = pm.getInstalledPackages(); // 遍历集合
for(int i = ; i<pList.size(); i++){
// 拿到元素
PackageInfo packageInfo = pList.get(i);
//判断是否是第三方应用 同时 不包含当前的应用的包名
if(isThirdPartyApp(packageInfo.applicationInfo) &&
!packageInfo.packageName.equals(context.getPackageName())) {
// 填充实体类
AppInfo app = new AppInfo();
// 获取应用名
app.packageName = packageInfo.packageName;
app.versionName = packageInfo.versionName;
app.versionCode = packageInfo.versionCode;
app.insTime = packageInfo.firstInstallTime;
app.updTime = packageInfo.lastUpdateTime;
app.appName = (String) packageInfo.applicationInfo.loadLabel(pm);
// 获取图标
app.icon = packageInfo.applicationInfo.loadIcon(pm);
// 计算程序的大小
String dir = packageInfo.applicationInfo.publicSourceDir;
long byteSize = new File(dir).length();
// 实际大小
app.byteSize = byteSize;
// 格式化好的大小
app.size = getSize(byteSize);
list.add(app);
}
}
return list;
} /**
* 判断应用是否是第三方应用
* @param appInfo
* @return
*/
public static boolean isThirdPartyApp(ApplicationInfo appInfo) {
boolean flag = false;
if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != ) {
// 可更新的系统应用
flag = true;
}
else if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ) {
// 非系统应用
flag = true;
}
return flag;
} /*获取文件大小*/
public static String getSize(long size){
return new DecimalFormat("0.##").format(size * 1.0/(*));
} /*获取时间*/
public static String getTime(long millis){
Date date = new Date(millis);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
} /*
*打开包文件
*/
public static void openPackage(Context context, String packageName){
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} /*卸载APK安装包*/
public static void uninstallApk(Activity context, String packageName, int requestCode){
Uri uri= Uri.parse("package:"+packageName);
Intent intent = new Intent(Intent.ACTION_DELETE,uri);
context.startActivityForResult(intent,requestCode); } public static List<AppInfo> getSearchResult(List<AppInfo> list,String key){
List<AppInfo> result = new ArrayList<AppInfo>();
for (int i= ; i < list.size(); i++){
AppInfo app = list.get(i);
if (app.appName.toLowerCase().contains(key.toLowerCase())){
result.add(app);
}
}
return result;
} public static SpannableStringBuilder highLightText(String str, String key){
int start = str.toLowerCase().indexOf(key.toLowerCase());// 不区分大小写
int end = start + key.length(); SpannableStringBuilder sb = new SpannableStringBuilder(str);
sb.setSpan(
new ForegroundColorSpan(Color.RED), // 前景颜色
start, // 起始坐标
end, // 终止坐标
Spannable.SPAN_EXCLUSIVE_INCLUSIVE
); return sb;
} }

Android 软件管理工具类Utils的更多相关文章

  1. android的Log日志打印管理工具类(一)

    android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...

  2. LogCook 一个简单实用的Android日志管理工具

    众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...

  3. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

  4. 一个使用命令行编译Android项目的工具类

    一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...

  5. 阶段3 2.Spring_07.银行转账案例_4 编写事务管理工具类并分析连接和线程解绑

    事务管理工具类 首先需要有connection.并且是当前线程上的connection.声明connectionUtils.提供set方法等着spring来注入 有异常需要放在事务里面 close关闭 ...

  6. ubuntu软件管理工具的使用——dpkg和apt

    deb.rpm.tar.gz三种Linux软件包的区别在哪里呢,这种区别可能使安装进行不下去,那么我们应该下载什么格式的包呢?下面具体讲解一下. rpm包是在Redhat.Suse和Fedora可以直 ...

  7. android开发Tost工具类管理(一)

    Tost工具类管理: package com.gzcivil.utils; import android.content.Context; import android.widget.Toast; / ...

  8. Android log 管理工具

    1.logger 项目地址: https://github.com/orhanobut/logger 2.KLog 项目地址:https://github.com/ZhaoKaiQiang/KLog ...

  9. Android常用的工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils. Prefe ...

随机推荐

  1. PAT 甲级 1041 Be Unique (20 分)

    1041 Be Unique (20 分) Being unique is so important to people on Mars that even their lottery is desi ...

  2. cookie.js插件

    /*! cookiejs v1.0.23 | MIT (c) 2018 kenny wong | https://github.com/jaywcjlove/cookie.js */!function ...

  3. 通过spark sql 将 hdfs上文件导入到mongodb

    功能:通过spark sql 将hdfs 中文件导入到mongdo 所需jar包有:mongo-spark-connector_2.11-2.1.2.jar.mongo-java-driver-3.8 ...

  4. jmeter压测之添加负载机

    jmeter压测基本介绍一般基准测试(基准测试时间一般为5分钟)后压测的时间是10-15分钟: 实施测试之前要拿到测试指标 例如:tps要达到多少响应时间要达到多少并发数要达到多少TPS :服务端每秒 ...

  5. CPU与内存互联的架构演变

    随着计算机中CPU核数目的增加,传统的UMA(unifonn memory access)架构由于对关键硬件(如中央内存控制器)的竞争加剧出现了性能上的瓶颈,即扩展性不强.而NUMA架构则以其良好的可 ...

  6. Django之form模板的使用

    form模块的简介与用处 1.form 是前后端交互的一种方式, form表单提交的一种,django中有一个模块是form他主要用处就过滤前端form提交的数据 1. forms 模块是处理前后台的 ...

  7. UI5-培训篇-Fiori培训

    1.学习网站: SAPUI5学习地址: https://blog.csdn.net/stone0823/article/category/6650292/1? SAPUI5文档: https://sa ...

  8. DOM+position:relative+缓冲运动

    一.nodeType节点类型 nodeType==3  ->文本节点 nodeType==1  ->元素节点 for(var i=0;i<oUl.childNodes.length; ...

  9. java 集合是否有序

    参考:https://www.cnblogs.com/hoobey/p/5914226.html

  10. zabbix安装脚本

    #!/bin/bash # #安装zabbix源.aliyun YUM源 #curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyu ...