Получить другие приложения значок URI? - PullRequest
4 голосов
/ 19 августа 2011

У меня есть Android-приложение, которое показывает значки других приложений.

Я получаю значки других приложений с помощью appInfo.loadIcon, а затем устанавливаю виджеты с помощью setImageViewBitmap.

Проблема в том, что если у меня слишком много значков в виджете, я получаю ошибку «СБОЙ БИНДЕРА». Я понимаю, что это из-за ограничения размера и решение использовать изображение URI вместо самого растрового изображения.

Есть ли доступный URI для значков других приложений?

Спасибо.

Ответы [ 3 ]

12 голосов
/ 24 февраля 2014

Если вы не знаете имя ресурса, вы также можете получить доступ к ресурсам по их идентификатору:

android.resource://[package]/[res_id]

Идентификатор ресурса значка приложения доступен в ApplicationInfo приложения:

ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
if(appInfo.icon != 0) {
    Uri uri = Uri.parse("android.resource://" + packageName + "/" + appInfo.icon);
}
8 голосов
/ 28 ноября 2012

Хотя @ ответ CommonWare во многих случаях хорош, я считаю, что это часто проще: android.resource://[package]/[res id] - особенно если вам нужна ссылка, например, на иконку запуска другого приложения.

5 голосов
/ 19 августа 2011

Попробуйте android.resource://[package]/[res type]/[res name], где [res type] в вашем случае будет drawable. Пакет и имя должны быть получены от ResolveInfo или от того, где вы получаете свои данные.

...