2

我找不到如何在我的应用程序中列出另一个应用程序中的所有可绘制对象。

如果我知道名称,我设法获得了可绘制对象,但找不到从 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 和进程,所以我有权从其他应用程序访问资源。

提前致谢。

4

1 回答 1

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

于 2012-10-11T04:10:31.983 回答