gpt4 book ai didi

java - ResolveInfo getIconResource() 给出非常奇怪的结果(不正确的图标)

转载 作者:可可西里 更新时间:2023-10-31 22:03:59 25 4
gpt4 key购买 nike

我正在创建手机上安装的应用程序列表。我正在使用 PackageManagerResolveInfo 检索所有已安装的应用程序。由于内存问题,我使用 getIconResource() 而不是 loadIcon()

我的问题是如何使用 iconResource int 在 imageView 中显示正确的图标?

编辑:添加代码

这是我创建一个列表的部分,其中已安装的应用程序存储在 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 中,我想将图标放在 ImageView 中

ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
int id = apps.get(position).icon;
appIcon.setImageResource(id);

这是手机上的结果,它显示奇怪的图标(有些应用甚至使用谷歌加号图标:

enter image description here

它还会给出有关找不到资源的错误:

W/ResourceType:getEntry 失败,因为 entryIndex 1 超出类型 entryCount 1
W/ResourceType:获取包 0 中 0x7f030001 (t=2 e=1) 的条目失败(错误 -2147483647)
W/ImageView:找不到资源: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();
}

关于java - ResolveInfo getIconResource() 给出非常奇怪的结果(不正确的图标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com