2012-08-14 52 views
1

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

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

感谢

+0

没有办法得到一个可绘制的资源ID在你想要的格式(com.android.systemui。 R.drawable.ic_xxx)在运行时。资源ID引用R.java类中自动创建的静态整数字段。但是,您可以获取整个Drawable。查看下面的答案。 – jenzz 2012-08-14 23:10:55

回答

5

您可以通过使用获得的应用程序的Drawable图标:

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

如果你有兴趣在自己的应用程序的可绘制的资源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) {} 
+0

有没有办法让其他应用程序的int资源id可绘制? – 2014-02-28 17:42:10

0

这个方法应该得到一个应用程序,包括你的应用程序图标的工作:

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);