ResolveInfo getIconResource() 给出非常奇怪的结果(不正确的图标)
ResolveInfo getIconResource() giving really strange results (incorrect icons)
我正在创建 phone 上安装的应用程序列表。我正在使用 PackageManager
和 ResolveInfo
检索所有已安装的应用程序。由于内存问题,我使用 getIconResource()
而不是 loadIcon()
。
我的问题是如何使用 iconResource int 在 imageView 中显示正确的图标?
编辑:添加代码
这是我创建一个列表的部分,其中已安装的应用程序存储在数组列表中 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 中,我想将图标集放在 ImageView 中
ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
int id = apps.get(position).icon;
appIcon.setImageResource(id);
这是 phone 上的结果,它显示奇怪的图标(有些应用程序甚至使用 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
问题是我从错误的地方检索图像。这是获得正确图标的代码:
ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
String packageName = apps.get(position).name.toString();
try {
Drawable icon = getPackageManager().getApplicationIcon(packageName);
appIcon.setImageDrawable(icon);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
我正在创建 phone 上安装的应用程序列表。我正在使用 PackageManager
和 ResolveInfo
检索所有已安装的应用程序。由于内存问题,我使用 getIconResource()
而不是 loadIcon()
。
我的问题是如何使用 iconResource int 在 imageView 中显示正确的图标?
编辑:添加代码
这是我创建一个列表的部分,其中已安装的应用程序存储在数组列表中 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 中,我想将图标集放在 ImageView 中
ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
int id = apps.get(position).icon;
appIcon.setImageResource(id);
这是 phone 上的结果,它显示奇怪的图标(有些应用程序甚至使用 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
问题是我从错误的地方检索图像。这是获得正确图标的代码:
ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
String packageName = apps.get(position).name.toString();
try {
Drawable icon = getPackageManager().getApplicationIcon(packageName);
appIcon.setImageDrawable(icon);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}