博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android简易实战教程--第十一话《获取手机所有应用信息Engine类详解》
阅读量:4975 次
发布时间:2019-06-12

本文共 2862 字,大约阅读时间需要 9 分钟。

如果想要获取系统手机应用的详细信息,那么下边代码可以直接作为模板使用。笔者对每一行代码都做了注解,供您参考。直接上代码:

package com.example.itydl.engines;import java.io.File;import java.util.ArrayList;import java.util.List;import com.example.itydl.domain.AppBean;import android.content.Context;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.os.Environment;/** * Engine类,获取所有安装的apk详细信息 * @author ydl * */public class AppManagerEngine {	/**	 * 	 * @param context	 * @return	 * 		sd卡的可用空间,单位为byte	 */	public static long getSDAvailSpace(Context context){		long sdAvaliSpace = 0;				//获取sd卡的目录		File externalStorageDirectory = Environment.getExternalStorageDirectory();		//获取sd卡的可用空间。通过文件夹来间接计算剩余空间大小		sdAvaliSpace = externalStorageDirectory.getFreeSpace();		//把获取的剩余数据返回		return sdAvaliSpace;	}		/**	 * 	 * @param context	 * @return	 * 		手机ROM中的剩余空间	 */	public static long getRomAvailSpace(Context context){		long romAvaliSpace = 0;		//获取rom所有目录结构		File dataDirectory = Environment.getDataDirectory();		//获取rom的可用空间。通过文件夹来间接计算剩余空间大小		romAvaliSpace = dataDirectory.getFreeSpace();		//把获取的剩余数据返回		return romAvaliSpace;	}		/**	 *	 * @param context	 * @return	 * 		所有的安装了的apk的详细信息	 */	public static List
getAllInstalledApks(Context context){ List
apksBean = new ArrayList
(); //获取包管理器 PackageManager manager = context.getPackageManager(); //通过包管理器对象,获取所有的安装了的apk的信息 List
installedPackages = manager.getInstalledPackages(0);//Return a List of all packages that are installed on the device. //遍历所有应用包信息,分别得到每个应用包的详细信息。就可以对该应用的数据在界面显示了 for (PackageInfo packageInfo : installedPackages) { //把每个包的应用信息,封装到javabean里面。创建AppBean类 AppBean bean = new AppBean(); //设置apk的包名 bean.setPackName(packageInfo.packageName); //设置apk的名字,记住 bean.setAppName(packageInfo.applicationInfo.loadLabel(manager)+"");//loadLabel(manager)获取标签 //设置apk的图标 bean.setIcon(packageInfo.applicationInfo.loadIcon(manager)); //设置apk的大小。通过获取apk文件,间接获取该apk的占用空间大小 String sourceDir = packageInfo.applicationInfo.sourceDir;//得到该应用的一个路径 //得到该路径的文件 File file = new File(sourceDir); //得到apk的大小,字节为单位 bean.setSize(file.length());//Returns the length of this file in bytes. //根据标志位,是否是系统apk或者用户apk //获取该apk的flag属性 int flag = packageInfo.applicationInfo.flags; //判断是否是系统的apk if((flag&ApplicationInfo.FLAG_SYSTEM)!=0){//ApplicationInfo.FLAG_SYSTEM表示系统的apk的flag标志 //是系统的apk bean.setSystem(true);//是系统应用的标记 }else{ //不是系统的apk bean.setSystem(false); } //判断应用安装在了系统还是sd if((flag & ApplicationInfo.FLAG_EXTERNAL_STORAGE)!=0){ //安装在了sd卡 bean.setSd(true);//sd卡的标记 }else{ bean.setSd(false);//rom中的标记 } //把获取的每一个apk的信息对象封装到数据源模型层 apksBean.add(bean); } return apksBean; }}

转载于:https://www.cnblogs.com/wanghang/p/6299629.html

你可能感兴趣的文章
CF821 B. Okabe and Banana Trees 简单数学
查看>>
移动web app开发必备 - zepto事件问题
查看>>
P4206[NOI2005]聪聪与可可
查看>>
GitHub使用简介
查看>>
如何在帮助页面添加测试工具
查看>>
解决方法:未能加载文件或程序集“Microsoft.Office.Interop.Excel。。
查看>>
WinForm SetWindowPos窗口置顶使用说明
查看>>
LinqPad小工具
查看>>
NAnt构建手册
查看>>
Atiti. Php Laravel 5.1 环境搭建以及 error 排除
查看>>
C++ 合成默认构造函数的真相
查看>>
汉诺塔算法
查看>>
quartz在application中的使用
查看>>
UNIX环境编程学习笔记(28)——多线程编程(三):线程的取消
查看>>
正则(?is)
查看>>
MFC编程入门之八(对话框:创建对话框类和添加控件变量)
查看>>
MACD各分时背离所对应的时间
查看>>
werkss 的 人工智能程序开发理论框架
查看>>
spring注解 @Scheduled(cron = "0 0 1 * * *")的使用来实现定时的执行任务
查看>>
企业实施CRM系统带来的一些好处
查看>>