检索活动实例的ActivityInfo

时间:2011-03-18 00:19:02

标签: java android reflection android-manifest

我在帮助器类中有一个Activity实例,我正在尝试从AndroidManifest.xml文件中的条目中获取属性。

我可以获取所有ActivityInfo个实例的列表,但如何针对我的应用程序定位特定的实例呢?

活动实例与辅助类不在同一个包中,并且未在同一清单中定义(辅助类是活动应用程序项目中包含的库)。

到目前为止我所拥有的:

Activity activity = //the instance
String applicationPackage = activity.getApplicationInfo().packageName;
PackageInfo info = activity.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
for (ActivityInfo activityInfo : info.activities) {
    if (/* activityInfo applies to our activity instance */) {
        return activityInfo.someProperty;
    }
}

2 个答案:

答案 0 :(得分:4)

我对您的问题的理解:您需要在应用程序中获取有关特定活动的信息。

目前,您正在使用getPackageInfo从程序包管理器获取程序包信息,但如果您只关心应用程序中的一个Activity,则无需执行此操作。您可以使用getActivityInfo,只要您知道活动的完全限定名称并使用ComponentName,例如:com.example.myapp/com.example.myapp.myactivity

PackageManager Docs

答案 1 :(得分:0)

如果要检索当前活动的信息

ActivityInfo info = getPackageManager()。getActivityInfo(getComponentName(),0);