Android中获取系统上安装的APP信息

Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259

Android中获取系统上安装的APP信息,并且提供卸载、区别用户应用和系统应用的小程序,供初学者参考。

public class PakageInfoProvider {

private static final String tag = "GetappinfoActivity";

private Context context;

private List<AppInfo> appInfos;

private AppInfo appInfo;

 

public PakageInfoProvider(Context context) {

super();

this.context = context;

}

 

public List<AppInfo> getAppInfo() {

PackageManager pm = context.getPackageManager();

List<PackageInfo> pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

appInfos = new ArrayList<AppInfo>();

for (PackageInfo packageInfo : pakageinfos) {

appInfo = new AppInfo();

 

//获取字符串方法

context.getString(R.string.app_name);

context.getResources().getString(R.string.app_name);

//获取尺寸资源方法

context.getResources().getDimension(R.dimen.test);

//获取xml文件并且返回的是XmlResourceParse类,其继承与XmlPullParse

XmlResourceParser xmlrp = context.getResources().getXml(R.xml.yo);

// 获取应用程序的名称,不是包名,而是清单文件中的labelname

String str_name = packageInfo.applicationInfo.loadLabel(pm).toString();

appInfo.setAppName(str_name);

 

// 获取应用程序的版本号码

String version = packageInfo.versionName;

appInfo.setAppVersion(version);

 

// 获取应用程序的快捷方式图标

Drawable drawable = packageInfo.applicationInfo.loadIcon(pm);

appInfo.setDrawable(drawable);

 

// 获取应用程序是否是第三方应用程序

appInfo.setIsUserApp(filterApp(packageInfo.applicationInfo));

 

//给一同程序设置包名

appInfo.setPackageName(packageInfo.packageName);

 

 Logger.i(tag, "版本号:" + version + "程序名称:" + str_name);

appInfos.add(appInfo);

appInfo = null;

}

 

return appInfos;

}

 

/**

 * 三方应用程序的过滤器

 *  

 * @param info

 * @return true 三方应用 false 系统应用

 */

public boolean filterApp(ApplicationInfo info) {

if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {

// 代表的是系统的应用,但是被用户升级了. 用户应用

return true;

} else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {

// 代表的用户的应用

return true;

}

return false;

}

 

}

 

 

 

posted @   LeeHonGee  阅读(7082)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示