วิธีรับ ID ของทรัพยากรที่อ้างอิงโดยแหล่งข้อมูลอื่น


9

ฉันต้องการรับ ID ของทรัพยากรที่อ้างอิงในขณะใช้งานจริง เช่นนี้เป็นรหัสของฉัน:

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

และฉันสนใจใน ID ของการR.string.get_startedมีเพียงการอ้างอิงถึงR.string.d2c_entryroadblock_start_valueใน runtime

คุณยังสามารถดูว่ามันมีลักษณะอย่างไรในเครื่องมือวิเคราะห์ 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;

ตามที่ปรากฏรหัสตัวเลขสำหรับทรัพยากร aliased จะอยู่ในTypedValue's dataฟิลด์ Integer.toHexString()หากคุณต้องการมันจริงในเลขฐานสิบหกคุณสามารถส่งผ่านไปยัง และถ้าคุณต้องการชื่อทรัพยากรที่มีชื่อแทนมันก็แค่:

String aliasedName = getResources().getResourceEntryName(value.data);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.