Recuperando ícones de aplicativos xhdpi do packageManager?

Eu tenho uma atividade no meu aplicativo em que um ListView de todos os aplicativos instalados é gerado. Além do nome do aplicativo, o ícone do aplicativo também é exibido. Eu criei uma matriz de objetos contendo todas as informações sobre o aplicativo, entre elas o ícone, e recuperei o ícone usando:

drawableAppIcon = mPackageManager.getApplicationIcon(apps.applicationInfo);

Ondeapplication é um<PackageInfo> objeto. O problema com isso é que, enquanto eu tenho acesso a todos os drawables, vários apps parecem puxar vários drawables de qualidade; um ícone de aplicativo será extremamente alto, enquanto outro será a versão de baixa resolução. Eu teria pensado que a linha de código acima teria explicado o tamanho da tela e encontrado os ícones apropriados, mas isso não acontece. Existe uma alternativa que considera o tamanho da tela? Ou ainda mais preferencialmente existe uma maneira de extrair apenas o ícone de maior resolução e, em seguida, redimensioná-lo com base no tamanho da tela, o que basicamente garantiria que todos eles parecessem limpos?

EDIT: eu encontrei uma solução, mas só funciona para o 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();
}

Para a referência de outros, isso funciona, se alguém tiver uma solução para uma versão mais antiga do Android que seria realmente útil.

questionAnswers(2)

yourAnswerToTheQuestion