Я создаю список приложений, установленных на телефоне. Я извлекаю все установленное приложение с PackageManager
и ResolveInfo
. Из-за проблемы с памятью я использую getIconResource()
вместо loadIcon()
.ResolveInfo getIconResource() дает действительно странные результаты (неправильные значки)
Мой вопрос: как я могу отобразить правильные значки в изображенииView с помощью iconResource, int?
EDIT: добавлен код
это та часть, где я создать список с установленными приложениями откладываются в ArrayList apps
private void loadApps(){
manager = getPackageManager();
apps = new ArrayList<AppDetail>();
if(apps.size()==0) {
Intent i = new Intent(Intent.ACTION_MAIN, null);
i.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0);
for (ResolveInfo ri : availableActivities) {
AppDetail app = new AppDetail();
app.label = ri.loadLabel(manager);
app.name = ri.activityInfo.packageName;
app.icon = ri.activityInfo.getIconResource();
app.allowed = false;
apps.add(app);
}
Log.i("applist", apps.toString());
}
}
В ArrayAdapter я хочу поставить набор иконок в a ImageView
ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
int id = apps.get(position).icon;
appIcon.setImageResource(id);
Это результат на телефоне, отображающий странные значки (некоторые приложения даже использовать Google иконки плюс:
Это также дает ошибки о не найти ресурс:
W/ResourceType﹕ getEntry failing because entryIndex 1 is beyond type entryCount 1 W/ResourceType﹕ Failure getting entry for 0x7f030001 (t=2 e=1) in package 0 (error -2147483647) W/ImageView﹕ Unable to find resource: 2130903041
вы пробовали [это] (http://stackoverflow.com/questions/11961599/get-resource-id-of-the-icon-of-another -android-приложение)? – dora
Я отредактировал ответ с проблемой – DevelopingBeaver