android - Android,如何提取系统应用程序并执行一些检查
问题描述
我有一个数组中的appName列表,我需要一个系统应用程序列表+已安装应用程序,然后需要将它与appName中的每个应用程序进行比较,如果系统应用程序列表中的任何应用程序+已安装与appName中的应用程序匹配,那么我们如果不同,需要检查他们的版本,然后采取一些措施。
我从编写以下代码开始:
private List<ApplicationInfo> getInstallapp(){
final PackageManager pm = context.getPackageManager();
List<ApplicationInfo> installedApps;
try {
installedApps = pm.getInstalledApplications(0);
pm.getPackageInfo(getPackageName(),0);
} catch (final PackageManager.NameNotFoundException e) {
installedApps = null;
}
for(int i=0; i<installedApps.size();i++){
Log.d("Apps", "Apps are: "+installedApps.get(i).toString());
}
Log.d("System apps", "System apps are: " +installedApps);
return installedApps;
}
但现在我被卡住了,因为我正在以以下格式获取每个应用程序
ApplicationInfo{53a4a03 com.android.providers.contacts}
我怎样才能得到版本号。每个应用程序以及字符串格式的每个应用程序,以便我可以将其与列表中的应用程序进行比较。
请帮助我前进。
解决方案
我不知道你想要哪个(版本代码或版本名称),但对于任何一种情况,调整你的 for 循环以获得每个
for(int i=0; i<installedApps.size();i++){
PackageInfo pkgInfo=pm.getPackageInfo(installedApps.get(i).packageName,0);
//For versionCode
int versionCode=pkgInfo.versionCode;
//For versionName
String versionName=pkgInfo.versionName;
//App name
String appName=pm.getApplicationLabel(pm.getApplicationInfo(installedApps.get(i).packageName, 0));
Log.d("Apps", "Apps are: "+installedApps.get(i).toString()+"version code "+versionCode+" version name "+versionName+" app name "+appName);
}
推荐阅读
- kubernetes - Traefik kubernetes crd - 代理外部主机
- pine-script - 策略测试器:在没有指标脚本的情况下引用指标信号
- linux - Linux中的页面对齐
- node.js - .save() 与 save pre hook 不适用于 Mongoose
- r - 汇总条件和加起来为 0
- jquery - 在 .js 文件中 document.ready() 没有先触发
- web-scraping - 使用 IMPORTXML 将 Yahoo Finance 中的行业信息抓取到 Google 表格中
- python - 如何从另一个函数访问返回的函数值
- android - Android Kotlin - Recyclerview 检测滑动到 onBindViewHolder 内的下一个/上一个项目
- javascript - 从 firebase 实时数据库中获取 JSON 数据