admin管理员组

文章数量:1558077

Android 的应用管理主要是通过packageManagerService来完成的。

PackageManagerService服务负责各种APK包的安装,卸载,优化和查询

PackageManagerService在启动时会扫描所有的APK文件和jar包,然后把他们的信息读取出来,保存在内存中,这样系统在运行时就能迅速找到各种应用和组件的信息.

PackageInfo类 :用来描述mainfest中所有描述信息

获取方式:List <PackageInfo list = getPackageManager
.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
getInstalledPackages()方法获取到安装的应用信息,他接收一个int flages的值
参数 :
0 :表示不接受任何flage信息,当然也是能够返回得到一些基本的包信息

GET_ACTIVITIES : 返回该activityes所有的包的activities信息
GET_UNINSTALLED_PACKAGES :用来获得所有(包括删除的)有包数据目录的应用信息
GET_PERMISSIONS:返回所在包权限的信息

通过上述方法得到系统安装的所有应用程序,无论是手动安装的apk包信息,还是系统预装的应用软件。
可以通过list获取到packageInfo,再通过packageInfo.application获取applicationInfo,判断application.flages & Application.FLAG_SYSTEM 的值,该值大于0时表示系统预装应用,反之手动


然后通过AppicationInfo来获取应用程序的基本信息
//获取应用图标
 Drawable drawable = applicationInfo.loadIcon(packageManager); 
//获取应用程序的 包名 
String appPackageName = applicationInfo.packageName; 
//获取应用名 //参数 packageManager 是应用管理者对象 
String appName =applicationInfo.loadLabel(packageManager).toString();


获取应用程序对应数据的目录以及占用的空间大小
//获取应用存放数据目录 
String dir = applicationInfo.sourceDir; 
Log.d("app ","应用存放数据目录 " +dir);
 //获取应用数据大小 
 long length = new File(dir).length(); 
//转换为 M 
float size = length*1f/1024/1024;
 Log.d("app ","应用数据大小 " +length+"\t"+size);

判断是否安装在外置存储空间
//判断是否安装在外存 
int flags = applicationInfo.flags; if((flags&ApplicationInfo.FLAG_EXTERNAL_STORAGE)==ApplicationInfo.FLAG_EXTERNAL_STORAGE){
 Log.d("app "," 安装在 外置存储空间 ");
}else { 
Log.d("app "," 安装在 内置存储空间 "); }

本文标签: androidapp