- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在创建手机上安装的应用程序列表。我正在使用 PackageManager
和 ResolveInfo
检索所有已安装的应用程序。由于内存问题,我使用 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);
这是手机上的结果,它显示奇怪的图标(有些应用甚至使用谷歌加号图标:
它还会给出有关找不到资源的错误:
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/
我在res / drawable文件夹中有一些图像。现在需要将图像存储在列表中。 我尝试这样做 ArrayList myImageList = new ArrayList<>(); myImageLi
我正在尝试获取与扩展关联的默认程序的图标。 这是我的代码: Intent intent = new Intent(Intent.ACTION_VIEW); MimeTypeMap mime = Mim
在我的主屏幕替换应用程序中,我必须获取所有已安装应用程序的列表才能将它们放入应用程序抽屉中。因此,以下方法会在每个应用程序上运行; public static App fromResolveInfo
我正在创建手机上安装的应用程序列表。我正在使用 PackageManager 和 ResolveInfo 检索所有已安装的应用程序。由于内存问题,我使用 getIconResource() 而不是 l
我正在尝试为 android 制作一个自定义启动器,并且我正在尝试弄清楚如何启动一个不同的应用程序表单。我认为这样做的方法是 Intent ,我在这里找到了一个帖子: Open another app
我有一个列表,其中包含可以处理我的两个操作 Intent.ACTION_PICK 和 MediaStore.ACTION_IMAGE_CAPTURE 中的任何一个的应用程序。稍后我使用数组适配器使用此
对于手机上安装的所有应用程序,我需要访问: 姓名 图标 可以安装应用程序的 google play url 我查看了 ApplicationInfo,但它似乎没有向我提供此信息。我听说过 Packag
我想将我的 Activity (com.myapp.launcher.settings) 添加到一个空的 ArrayList。 ArrayList selectedApps = new Arr
实际上,我正在尝试将一个项目从 ArrayList a (allApps) 添加到 ArrayList b (myApps),但出现错误。 这就是我正在尝试的: public ArrayList my
我正在尝试显示所有已安装的应用程序及其图标。单击列表项后,我将显示与该应用程序相关的记录。 应用程序和图标显示正常,但是当我单击列表项时出现以下错误。java.lang.classcastExcept
自从更新我的依赖项以来,我的 django 应用程序遇到了一些问题。这是我安装的应用程序: INSTALLED_APPS = [ 'graphene_django', 'rest_fr
我是一名优秀的程序员,十分优秀!