別のリソースが参照しているリソースのIDを取得するにはどうすればよいですか?


9

実行時に参照されるリソースのIDを取得したいのですが。たとえば、これは私のコードです:

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

実行時にR.string.get_started参照のみを持つのIDに興味がありR.string.d2c_entryroadblock_start_valueます。

以下のAPKアナライザでどのように見えるかを確認することもできます-取得する必要があります @ref/0x7f1302fc

APKアナライザーのスクリーンショット

回答:


6

Resources#getValue()メソッドで取得しfalseresolveRefsパラメータを渡します。例えば:

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

示されているように、エイリアスリソースの数値IDがTypedValuedataフィールドに表示されます。16進数で実際に必要な場合は、に渡すことができますInteger.toHexString()。そして、エイリアスされたリソース名が必要な場合、それは簡単です:

String aliasedName = getResources().getResourceEntryName(value.data);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.