如何在不知道其资源名称的情况下迭代所有可绘制的另一个APK的资源

时间:2012-10-11 03:37:23

标签: android

我找不到如何从我的应用中列出所有可绘制的内容。

如果我知道这个名字,我设法得到了drawables,但是从1到N的简单循环找不到怎么做。

你们中的任何人都可以提供代码模板吗?

以下代码已经有效:

mAndromedaAddonContext = createPackageContext( "com.demo.andromeda",
                Context.CONTEXT_IGNORE_SECURITY );
mPlanetsResID[0] = mAndromedaAddonResources.getIdentifier( "planet20111007081421628", "drawable", "com.demo.andromeda" );

但我想在不使用资源名称的情况下进行迭代。 这些方面的东西:     for(int i = 0; i

我在清单文件中有相同的sharedUserId和进程,因此我有权从其他应用程序访问资源。

提前致谢。

1 个答案:

答案 0 :(得分:2)

首先使用mAndromedaAddonResources.getAssets()为您要定位的应用获取AssetManger的实例。

见这里: https://developer.android.com/reference/android/content/res/Resources.html#getAssets()

然后你可以使用

public final String[] list (String path)

在AssetManager类中使用

方法获取给定路径中所有资源的列表(在您的情况下,它将是您要定位的应用程序的res / drawable文件夹的路径)。这将为您提供一个字符串列表,其中每个字符串都是资产名称。然后,您只需使用您使用的相同代码来获取其标识符。

有关AssetManager的更多信息: https://developer.android.com/reference/android/content/res/AssetManager.html