从Uri获取资源ID

时间:2014-12-30 07:14:25

标签: android

你们知道是否可以从Uri获取资源ID?

例如来自

Uri soundUri = Uri.parse("android.resource://" + packageName + "/raw/" + name);

得到相当于这个

R.raw.name

谢谢你们!

2 个答案:

答案 0 :(得分:1)

如果问题是是否可以通过编码中给出的名称获得资源ID,那么 - 是的。

getIdentifier( name , "raw" , packageName );

然而轻轻地说。它使用反射,因此如果您使用proguard可能很容易破坏。你被警告了。

答案 1 :(得分:1)

imageView.setImageResource(context.getResources().
         getIdentifier(name, "raw", context.getPackageName()));

您也可以使用此

public static int getResId(String variableName, Class<?> c) {

    try {
        Field idField = c.getDeclaredField(variableName);
        return idField.getInt(idField);
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    } 
}

getIdentifier