Android-获取系统的应用程序的信息




/**
	 * 获取系统应用程序信息
	 * @return
	 */
	public List<AppInfo> getAppInfos(Context context){
		List<AppInfo> list = new ArrayList<AppInfo>();
		//1.获取包的管理者,获取清单文件中的所有信息
		PackageManager packageManager = context.getPackageManager();
		//2.获取系统中安装应用程序的信息
		List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
		//3.遍历集合
		for (PackageInfo packageInfo : installedPackages) {
			//4.获取数据
			//获取应用程序包名
			String packageName = packageInfo.packageName;
			//获取应用程序的版本号
			String versionName = packageInfo.versionName;
			//获取application信息
			ApplicationInfo applicationInfo = packageInfo.applicationInfo;
			//获取应用程序的图标
			Drawable icon = applicationInfo.loadIcon(packageManager);
			//获取应用程序的名称
			String name = applicationInfo.loadLabel(packageManager).toString();
			//因为是否安装在SD卡中和是否是用户应用程序是以标签的形式显示在系统中,所以首先先获取系统的所有标签
			boolean isUser;
			int flags = applicationInfo.flags;
			if ((flags & applicationInfo.FLAG_SYSTEM) == applicationInfo.FLAG_SYSTEM) {
				//系统应用
				isUser = false;
			}else{
				//用户应用
				isUser = true;
			}
			//判断应用安装位置
			boolean isSD;
			if ((flags & applicationInfo.FLAG_EXTERNAL_STORAGE) == applicationInfo.FLAG_EXTERNAL_STORAGE) {
				//安装在SD卡中
				isSD = true;
			}else{
				//安装在手机中
				isSD = false;
			}
			//5.保存数据
			AppInfo appInfo = new AppInfo(name, icon, packageName, versionName, isSD, isUser);
			//6.将保存bean添加集合中
			list.add(appInfo);
		}
		return list;
	}


早起的年轻人 CSDN认证博客专家 移动开发 项目管理 Java
只要用心去做,每一件事情还是有可能成功的,当然成功是没有界限的,只不过是达到自己心里的那个目标,公众号:我的大前端生涯,一个爱喝茶的程序员,通常会搞搞SpringBoot 、Herbinate、Mybatiys、Android、iOS、Flutter、Vue、小程序等.
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页