Farklı bir kaynak tarafından başvurulan kaynağın kimliği nasıl alınır?


9

Çalışma zamanında başvurulan kaynağın kimliğini almak istiyorum. Örneğin bu benim kodum:

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

ve R.string.get_startedsadece R.string.d2c_entryroadblock_start_valueçalışma zamanında referans olması ID ile ilgileniyorum .

Aşağıdaki APK analiz cihazında nasıl göründüğünü de görebilirsiniz - bunu almam gerekiyor @ref/0x7f1302fc

APK analizörü ekran görüntüsü

Yanıtlar:


6

Bunu parametre için Resources#getValue()geçerek yöntemle alabilirsiniz . Örneğin:falseresolveRefs

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

Gösterildiği gibi, takma adı verilen kaynağın sayısal kimliği TypedValue' dataalanında olacaktır. Aslında onaltılı olarak ihtiyacınız varsa, iletebilirsiniz Integer.toHexString(). Ve, diğer adın kaynak adına ihtiyacınız varsa, basitçe:

String aliasedName = getResources().getResourceEntryName(value.data);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.