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.