问题
I am doing the following to get the list of apps and I am only getting apps that were installed but not ALL apps, including system apps.
I have tried the following:
packageList1 = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA);
and this:
packageList1 = getPackageManager().getInstalledPackages(0);
For both cases, I am getting the same list of apps that I have installed on the phone.
回答1:
You are already getting a list of all installed applications including the system apps by calling this:
List<ApplicationInfo> apps = getPackageManager().getInstalledPackages(0);
Those with the flags:
ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
ApplicationInfo.FLAG_SYSTEM
are system apps. You can check for the flags like this:
List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo app : apps) {
if((app.flags & (ApplicationInfo.FLAG_UPDATED_SYSTEM_APP | ApplicationInfo.FLAG_SYSTEM)) > 0) {
// It is a system app
} else {
// It is installed by the user
}
}
回答2:
List<ApplicationInfo> apps = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo app : apps) {
if((app.flags & (ApplicationInfo.FLAG_UPDATED_SYSTEM_APP | ApplicationInfo.FLAG_SYSTEM)) > 0) {
// It is a system app
} else {
// It is installed by the user
}
}
来源:https://stackoverflow.com/questions/23599550/how-to-get-list-of-all-apps-including-system-apps