¿Cómo obtener la identificación del recurso referenciado por un recurso diferente?

9

Me gustaría obtener el ID del recurso referenciado en tiempo de ejecución. Por ejemplo, este es mi código:

<string name="d2c_entryroadblock_start_value" translatable="false">@string/get_started</string>

y estoy interesado en la ID de R.string.get_startedtener solo la referencia R.string.d2c_entryroadblock_start_valueen tiempo de ejecución.

También puede ver cómo se ve en el analizador de APK a continuación: necesito obtener eso @ref/0x7f1302fc

Captura de pantalla del analizador de APK

Mariusz
fuente

Respuestas:

6

Puede obtener eso con el Resources#getValue()método, pasando falseel resolveRefsparámetro. Por ejemplo:

TypedValue value = new TypedValue();
getResources().getValue(R.string.alias_name, value, false);
int aliasedId = value.data;

Como se muestra, la identificación numérica del recurso con alias estará en el campo TypedValue's data. Si realmente lo necesita en hexadecimal, puede pasarlo a Integer.toHexString(). Y, si necesita el nombre de recurso con alias, entonces es simplemente:

String aliasedName = getResources().getResourceEntryName(value.data);
Mike M.
fuente