2012-08-14 20 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);