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
。因此,每當使用來自Context.getPackageName()
的包名時,對Resources.getIdentifier(String,String,String)
的調用將返回0
。
如何獲取APK中可用資源包的列表,以便我可以搜索他們以獲取我的資源標識符?
我不明白這個實現,難道你不需要知道R的包爲了將其導入到java文件?如果不是,你不能編譯它 – tik27