Як отримати ідентифікатор посилається на інший ресурс?


9

Я хотів би отримати ідентифікатор посилається ресурсу під час виконання. Наприклад, це мій код:

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

і мене цікавить ідентифікатор, що R.string.get_startedмає лише посилання на R.string.d2c_entryroadblock_start_valueчас виконання.

Ви також можете побачити, як це виглядає в аналізаторі APK нижче - мені потрібно це отримати @ref/0x7f1302fc

Скріншот аналізатора APK

Відповіді:


6

Ви можете отримати , що з Resources#getValue()методом, проходячи falseпо resolveRefsпараметру. Наприклад:

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

Як показано, числовий ідентифікатор для псевдоніму ресурсу буде в полі TypedValue's data. Якщо він вам справді потрібен у шістнадцять, ви можете передати його Integer.toHexString(). І якщо вам потрібна назва псевдоніму ресурсу, це просто:

String aliasedName = getResources().getResourceEntryName(value.data);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.