【Android开发】获取已安装应用的安装文件(apk文件)
来源:互联网 发布:淘宝网购物精品羊毛衫 编辑:程序博客网 时间:2024/06/01 03:58
不管是“ES文件浏览器”、“QQ”等应用,它们都可以获取本机已安装的应用程序信息,还可以发送安装包(apk文件)给别人。
这两天查了一些资料,有所收获,整理一下,写在下面。
第一步:获取已安装的应用列表
应用分为两种:一种是系统自带的,另一种是用户自己安装的。
通过下面代码可以获取所有应用的信息:
List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
通过以下代码判断是否是应用分类:
if((applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){//非系统应用}else{//系统应用 }
第二步:获取已安装的应用对应的安装文件(apk)
//这个属性指定了apk的路径(如:/data/app/bassy.hair.main-1.apk)ApplicationInfo.sourceDir
//一般来说,这两个属性的值和上面的属性的值相同ApplicationInfo.publicSourceDirApplicationInfo.scanPublicsourceDir
默认情况下,必须要获取root权限,才能访问/data/app目录的,
如果没有root,用文件浏览器进入/data目录,会发现里面为空,并没有app文件夹
但是,有一点挺奇怪的,看下面截图
上面是adb shell工具直接查询已安装应用apk文件的属性
注意权限信息“-rw-r--r--”,这表明"/data/app/bassy.hair.main-1.apk"是可读的。
换句话说,我们可以在程序中直接访问该文件。
另外介绍ApplicationInfo的两个常用方法:
public CharSequence loadLabel(PackageManager pm)public Drawable loadIcon(PackageManager pm)
ApplicationInfo.loadLabel用于获取应用程序的名称
ApplicationInfo.loadIcon用于获取应用程序的图标
部分代码:
/** 获取已安装应用信息(不包含系统自带) */private ArrayList<AppInfo> getAppInfo(){List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(PackageManager.GET_SIGNATURES);ArrayList<AppInfo> infos = new ArrayList<AppInfo>();for (ApplicationInfo info : apps){if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0){// 非系统应用AppInfo appInfo = new AppInfo();appInfo.name = info.loadLabel(getPackageManager()).toString();appInfo.icon = info.loadIcon(getPackageManager());appInfo.path = info.sourceDir;appInfo.packageName = info.packageName;infos.add(appInfo);}}return infos;}
public class AppInfo implements Serializable{/** 序列号 */private static final long serialVersionUID = -6660233212727684115L;/** 名称 */public String name;/** (路径) */public String path;/** 图标 */public Drawable icon;/** 包名 */public String packageName;}
参考资料:
http://www.cnblogs.com/mainroadlee/archive/2011/05/23/android_get_installed_app.html
http://blog.csdn.net/zys871228/article/details/12746831
2 0
- 【Android开发】获取已安装应用的安装文件(apk文件)
- 获取已安装APP的apk文件
- Android开发之获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用 ...
- 【Android】获取手机中已安装apk文件信息
- 获取已安装apk文件信息
- 获取已安装的程序和APK文件的信息
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等) 收藏
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等) 收藏
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等) 收藏
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等) .
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- 重新教自己学算法之线性堆栈(八)
- TCP四次挥手中的2MSL是什么?
- 黑马程序员——java多线程学习笔记(纯干货附送个人学习感悟)
- HAVING字句的使用
- 3、类和对象
- 【Android开发】获取已安装应用的安装文件(apk文件)
- [none]CodeForces 534B
- Android开发过程遇到的问题
- 成长,没你想得那么迫切——雅虎《另一种活法》
- 制作Linux根文件系统关于链接库的问题
- 实型变量
- 猫猫学iOS(五十二)多线程网络之GCD下单例设计模式
- pypose机械臂简单控制
- linux下对第三方程序的代码执行效率分析