Android AppWidgetProviderInfo图标ID

时间:2011-04-13 10:13:05

标签: android resources widget

Android的AppWidgetProviderInfo类包含整数icon字段。我想把这个图标作为Drawable

我认为需要针对某个包Resources解析图标ID。小部件提供程序不属于我的应用程序,因此getResources()返回的我自己的应用程序资源无效。 Resources.getSystem()给出的系统资源也不是。

如何将此整数id转换为Drawable?

2 个答案:

答案 0 :(得分:1)

使用PackageManagergetResourcesForApplication()

答案 1 :(得分:1)

与CommonsWare一样,您需要使用getResourcesForApplication() 这里是你如何使用它,而且因为棒棒糖有一个loadIcon()功能更容易使用

Drawable icon = null;
if (Build.VERSION.SDK_INT >= 21) {
    icon = info.loadIcon(this, density);
} else {
    try {
        String packageName = info.provider.getPackageName();
        Resources resources = context.getPackageManager().getResourcesForApplication(packageName);
        icon = resources.getDrawable(info.icon);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
}