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. 【剑指offer】反转链表

    输入一个链表,反转链表后,输出新链表的表头. *与之前的问题不同,这里需要修改链表的指向(之前的问题,不需要修改结点的指针,只需使用栈保存每个结点的值) *注意非空处理以及最后一个结点指针的修改 /* ...

  2. Includes() vs indexOf() in JavaScript

    碰到一个问题, 部分机器网页数据源不正常, 简单排查发现是使用了较新的Array.includs 方法. 查了下兼容性, chrome 需要47版本以后支持, 客户机果然是很久的43版本. 用Arra ...

  3. ie和dom事件流的区别

    1.事件流的区别 IE采用冒泡型事件 Netscape使用捕获型事件 DOM使用先捕获后冒泡型事件 示例: 复制代码代码如下: <body> <div> <button& ...

  4. attr 和 prop 的区别

    在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: ...

  5. 自己动手实现JDK动态代理

    出自:作者:孤独烟  http://rjzheng.cnblogs.com/ ------------------------------------------------------------- ...

  6. uva-10041-水题

    题意:有个人想找到个房子住,并且他经常去其他街道,输入n条街,给这个人选择一条街,使得他去其他街道的距离总和最小. 排序,双重for #include <string> #include& ...

  7. win7、centos7 双系统安装总结

    centos7安装过程 问题:TroubleShooting选项进入图形化界面安装才成功. win7恢复引导区 问题:安装完Centos后,win7的引导区不见了 具体恢复过程:http://www. ...

  8. leetcode236

    class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { ...

  9. python中并发编程基础1

    并发编程基础概念 1.进程. 什么是进程? 正在运行的程序就是进程.程序只是代码. 什么是多道? 多道技术: 1.空间上的复用(内存).将内存分为几个部分,每个部分放入一个程序,这样同一时间在内存中就 ...

  10. Linux命令:logout

    logout [n] 退出当前shell,给父shell返回状态码n. 参考return.