我正在使用以下代码实现代码以仅显示用户安装的应用程序(如 facebook)和一些更新的系统应用程序(如 Gmail、youtube 等)。但它也显示了其他一些应用程序。所以我的问题是删除这些类型的应用程序的方法是什么。
我的最终目标是像 Google Play Store 一样显示应用列表。
我已阅读这些解决方案: 获取已安装的 android 应用程序列表
https://stacktips.com/tutorials/android/how-to-get-list-of-installed-apps-in-android
http://theopentutorials.com/tutorials/android/listview/how-to-get-list-of-installed-apps-in-android/
https://www.android-examples.com/get-list-installed-apps-package-name-icons/
https://inducesmile.com/android/android-list-installed-apps-in-device-programmatically/
packageManager = getPackageManager();
List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
List<PackageInfo> installedPackageInfo = new ArrayList<PackageInfo>();
for(PackageInfo pi: packageInfoList){
if(!isSystemPackage(pi)){
installedPackageInfo.add(pi);
}
}
boolean isSystemPackage(PackageInfo pkgInfo){
if((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)!=0)
return false;
else if((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)!=0)
return true;
else if((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED)!=0)
return false;
else
return true;
}
更新:我添加了显示一些不相关应用程序的图像。