检索应用程序的图标不适用于所有应用程序

时间:2018-08-02 12:59:26

标签: java android package icons

在我的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);
    }
}

问题在于,并非所有应用程序都检索到图标(有些包含图标,另一些使用默认占位符),我也不明白为什么,因为软件包名称已正确检索。

如果我需要编辑更多代码,请告诉我。

1 个答案:

答案 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
}