访问其他应用程序的资源和资源ID的方法

时间:2013-11-26 07:39:22

标签: android android-resources

经过一些研究和实践,我观察到我们可以使用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 ...)。

帮助我解决这个问题。任何帮助将不胜感激......

谢谢大家 抱歉我的英语...

2 个答案:

答案 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