Android获取不属于我的应用的资源的资源标识符

时间:2015-03-07 19:40:17

标签: android resources identifier resource-id

这是我们获取属于我们的应用程序的drawable的资源标识符的方式

int resID = getResources().getIdentifier("resourceName",
"drawable", "myPackageName");

但是当drawable不是我们的时候我们怎么办呢?
1。它属于android
2.它属于另一个应用程序(我猜这是通过使用其他应用程序的包名来完成的)

1 个答案:

答案 0 :(得分:0)

这是我的解决方案,它适用于我..假设iconResName的格式为:packageName+":drawable/"+drawableName; 我用我编写的以下函数获取资源Id。然后我们可以使用这个resId来获得drawable。

public static int getResIdFromResEntryName(String iconResName,Context con){
  try{
    String packageName = iconResName.split(":")[0]; 
    Context otherAppContext = con.createPackageContext(packageName,Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);
    Resources resources = otherAppContext.getResources();
    int resId = resources.getIdentifier(iconResName, null, null);
    return resId;
  }catch(Exception e){return 0;}    
}