Resources.getIdentifier(String,String,String) требуется пакет ресурсов. К сожалению, если APK был построен с опцией aapt
--rename-manifest-package
, пакет ресурсов не будет таким же, как пакет, возвращенный с Context.getPackageName(). Например, если AndroidManifest.xml
имеет следующее:Список доступных пакетов ресурсов Android во время выполнения?
<manifest package="foo.bar" ...>
...
</manifest>
но aapt
запускается с --rename-manifest-package foo.bar.baz
, то ресурсы APK будет иметь имя пакета foo.bar
в то время как Context.getPackageName()
вернется foo.bar.baz
. Таким образом, призывы к Resources.getIdentifier(String,String,String)
будут возвращать 0
всякий раз, когда используется имя пакета от Context.getPackageName()
.
Как я могу получить список доступных пакетов ресурсов в APK, чтобы я мог искать их для моего идентификатора ресурса?
Я не понимаю эту реализацию, разве вам не нужно знать пакет R, чтобы импортировать его в java-файл? Если нет, вы не можете его скомпилировать – tik27