【问题标题】:Get resource ID of the icon of another android application获取另一个android应用程序图标的资源ID
【发布时间】:2012-08-14 22:14:21
【问题描述】:

有没有办法获取另一个android应用程序图标的资源ID? (例如com.android.systemui.R.drawable.ic_xxx

我尝试了context.getApplicationInfo().icon,但它返回了一个长整数。 这可能吗?

谢谢

【问题讨论】:

  • 无法在运行时以所需格式 (com.android.systemui.R.drawable.ic_xxx) 获取 Drawable 的资源 ID。资源 ID 指的是 R.java 类中自动创建的静态整数字段。但是,您可以获得整个 Drawable。在下面查看我的答案。

标签: android resources icons


【解决方案1】:

您可以通过以下方式获取应用程序的Drawable 图标:

Drawable icon = getPackageManager().getApplicationIcon( PACKAGE_NAME );

如果你对自己应用的 Drawable 的资源 ID 感兴趣,试试这个:

int resourceID = getResources().getIdentifier( DRAWABLE_NAME , "drawable", PACKAGE_NAME );

或者,如果你关心性能,这个版本更快,但使用反射:

try {
      Class resource = R.drawable.class;
      Field field = resource.getField( DRAWABLE_NAME );
      int drawableId = field.getInt(null);
    } catch (Exception e) {}

【讨论】:

  • 有没有办法获取其他应用程序drawable的int资源ID?
  • @AmitKumarKhare 运气好吗?
  • @Tanasis 还没有找到任何解决方案。 ://
【解决方案2】:

此方法应该适用于获取应用程序的应用程序图标,包括您的:

String appPackageName=...; //use getPackageName() in case you wish to use yours
final PackageManager pm=getPackageManager();
final ApplicationInfo applicationInfo=pm.getApplicationInfo(packageName,PackageManager.GET_META_DATA);
final Resources resources=packageManager.getResourcesForApplication(applicationInfo);
final Bitmap appIconBitmap=BitmapFactory.decodeResource(resources,applicationInfo.icon);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多