在我的Android应用中,我显示了设备上安装的所有应用,并且我想显示每个应用的图标。
这是我使用包装名称检索图标的代码。
Drawable icon = Utils.getAppIconByPackage(context, app.getPackage());
if (icon != null) {
holder.ivIcon.setImageDrawable(icon);
} else {
try {
Uri uri = Uri.parse("android.resource://" + app.getPackage() + "/" + context.getPackageManager().getApplicationInfo(app.getPackage(), 0).icon);
Picasso.with(context)
.load(uri)
.placeholder(R.drawable.im_app_placeholder)
.into(holder.ivIcon);
} catch (Exception e) {
Picasso.with(context)
.load(ServerUtils.getItemAppIcon(app.getName() + ICON_EXTENSION))
.placeholder(R.drawable.im_app_placeholder)
.into(holder.ivIcon);
}
}
问题在于,并非所有应用程序都检索到图标(有些包含图标,另一些使用默认占位符),我也不明白为什么,因为软件包名称已正确检索。
如果我需要编辑更多代码,请告诉我。
答案 0 :(得分:0)
尝试一下,它对我有用
List<ApplicationInfo> applist = MainActivity.packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo info : applist) {
Drawable icon= info.loadIcon(MainActivity.packageManager); //icon of app
}