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 "," 安装在 内置存储空间 "); }
版权声明:本文标题:Android获取应用APP 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727320650a1108284.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论