经过一些研究和实践,我观察到我们可以使用PackageManager来访问其他应用的资源
Resources resources = getApplicationContext().getPackageManager().getResourcesForApplication(appPackageName);
但仅仅访问Resources
是不够的。我们需要每个Resource组件的ID,如Drawables,layouts,Strings等等......从Resources访问它们。
我已经搜索过SO并且自己很努力地了解如何获得其他应用程序的资源ID但却没有得到正确的解决方案。我在SO中看到,有些人建议使用像
这样的方法resources.getIdentifier(String name, String defType, String defPackage);
resources.getValue(String name, TypedValue outValue, boolean resolveRefs);
resources.getValue(int id, TypedValue outValue, boolean resolveRefs);
但没有Idea如何使用它们。
我需要访问其他应用的资源(Drawables,Strings,Layouts ...)。
帮助我解决这个问题。任何帮助将不胜感激......
谢谢大家 抱歉我的英语...答案 0 :(得分:1)
谢谢你的提问, 我可以通过以下代码访问。它工作得很好..
String lAppPkg = "com.example.sharedlogos";
resources = getApplicationContext().getPackageManager()
.getResourcesForApplication(lAppPkg);
int lID = resources.getIdentifier( mID, "drawable",
lAppPkg);
mImage.setBackground(resources.getDrawable(lID));
答案 1 :(得分:0)
我没有时间完美地完成但是应该这样做:
https://github.com/alt236/Android-Drawables---Android
这个项目试图至少从其他应用程序获取所有drawables。这也适用于Google Play:Android Resource Viewer