Получение значков приложений xhdpi из packageManager?

У меня есть активность в моем приложении, где генерируется ListView всех установленных приложений. В дополнение к названию приложения отображается значок приложения. Я создал массив объектов, содержащий всю информацию о приложении, в том числе значок, и получил значок, используя:

drawableAppIcon = mPackageManager.getApplicationIcon(apps.applicationInfo);

кудаapplication это объект. Проблема в том, что, хотя у меня есть доступ ко всем чертежам, различные приложения, кажется, тянут различные качественные элементы; один значок приложения будет иметь высокое разрешение, а другой - версию с низким разрешением. Я бы подумал, что приведенная выше строка кода учитывает размер экрана и найдет соответствующие значки, но это не так.т. Есть ли альтернатива, которая учитывает размер экрана? Или, еще более предпочтительно, есть ли способ извлечь только значок с самым высоким разрешением, а затем уменьшить его в зависимости от размера экрана, что в принципе гарантирует, что все они выглядят чистыми?

РЕДАКТИРОВАТЬ: ЯМы нашли решение, но оно работает только для Android 4.0+

try {
    Context otherAppCtxt = context.createPackageContext(apps.applicationInfo.packageName, Context.CONTEXT_IGNORE_SECURITY);
    info.drawableAppIcon = otherAppCtxt.getResources().getDrawableForDensity(apps.applicationInfo.icon, DisplayMetrics.DENSITY_XHIGH);
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

Для других' Ссылка, это работает, если у кого-то есть решение для более старой версии Android, которое было бы действительно полезно.

Ответы на вопрос(2)

Ваш ответ на вопрос