Я пытаюсь получить список установленных приложений в моем приложении, например ящик приложений для Android (список приложений в алфавитном порядке)
Я удаляю приложение, которое системных приложений из списка, но при этом удаляет необходимое приложение как Калькулятор, YouTube и т. д.
Однако если i Не отфильтровывать системное приложение , бесполезные системные приложения, такие как Резервное копирование, Corner_display, Bluetooth и т. Д. включены , которые я бы не хотел в ящике.
Вот код
final PackageManager packageManager = getPackageManager();
final List<PackageInfo> myInstalledPackagesList = packageManager.getInstalledPackages(0);
/*Excluding system applications*/
final List<PackageInfo> myInstalledPackagesListNonSystemApps = new ArrayList<>();
for(PackageInfo myInstalledPackagesListElement : myInstalledPackagesList){
if( !isSystemPackage(myInstalledPackagesListElement)){
myInstalledPackagesListNonSystemApps.add(myInstalledPackagesListElement);
}
}
Это код, который я написал, чтобы проверить, является ли приложение системным приложением или нет, чтобы позже удалить его из списка.
Это
- return True, если приложение является системным приложением,
- иначе возвращает False, если приложение не является системным приложением (установлен пользователем)
private boolean isSystemPackage(PackageInfo packageInfo) {
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
return ((applicationInfo.flags & applicationInfo.FLAG_SYSTEM) != 0);
}
myInstalledPackagesListNonSystemApps - это список, который я в конечном итоге использую
Ожидаемые результаты:
Список всех установленных пользователем приложений
+ Важные системные приложения (YouTube, калькулятор, контакты и т. Д.)
- (Другие системные приложения)
Любая помощь будет высоко ценится. Спасибо!