Попробуйте приведенный ниже код, и он работает нормально для меня.
В onCreate () вашей активности
new LoadApplications().execute();
Asynctask для получения всех системных приложений в Android
private class LoadApplications extends AsyncTask<Void, Void, List<ApplicationInfo>> {
@Override
protected List<ApplicationInfo> doInBackground(Void... params) {
systemAppsList = checkForLaunchIntent(packageManager.getInstalledApplications(PackageManager.GET_META_DATA));
return systemAppsList;
}
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected void onPostExecute(List<ApplicationInfo> result) {
super.onPostExecute(result);
setAdapter(result);
}
@Override
protected void onPreExecute() {
pProgressBar.setVisibility(View.VISIBLE);
super.onPreExecute();
}
}
private List<ApplicationInfo> checkForLaunchIntent(List<ApplicationInfo> list) {
ArrayList<ApplicationInfo> systemAppsList = new ArrayList<>();
for (ApplicationInfo info : list) {
try {
if (null != packageManager.getLaunchIntentForPackage(info.packageName)) {
boolean isSystemApp = ((info.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
Log.i("SystemApps", info.packageName + ", isSystemApp=" + isSystemApp);
if (isSystemApp) {
systemAppsList.add(info);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return systemAppsList;
}
private void setAdapter(List<ApplicationInfo> result) {
applicationAdapter = new ApplicationAdapter(getActivity(), systemAppsList);
appListView.setAdapter(applicationAdapter);
}