java - 检索 Activity 实例的 ActivityInfo

标签 java android reflection android-manifest

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

我可以获得所有 ActivityInfo 实例的列表,但是如何为我的应用程序定位特定实例?

Activity 实例与助手类不在同一个包中,也没有在同一个 list 中定义(助手类是包含在 Activity 的应用程序项目中的库)。

我目前拥有的:

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;
    }
}

最佳答案

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

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

PackageManager Docs

关于java - 检索 Activity 实例的 ActivityInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346844/

相关文章:

Android - ImageView 内的 Canvas drawLine

Android OpenGL queueEvent 为什么?

scala - 使用递归类型的基本 Scala 反射代码无法编译。为什么 ?如何解决?

java - java比较同一数组的元素

java - Sun Java KeyManagerFactory 和空密码

java - java中如何查找对象的实例号

android - 发布后的应用程序与我的设备不兼容

c++ - std::experimental::source_location 如何实现?

c# - 查询 Entity Framework 以获取动态类型列表

java - OneToOne Find 上的 JPA/Hibernate 双选