为什么主应用程序合并的AndroidManifest中找不到我的Android模块活动?

问题描述 投票:0回答:1

我当前的Android应用程序具有一个主应用程序和多个UI模块,

我正在尝试从我的主应用程序启动UI模块活动,如下所示...

 activity.startActivity(Intent().setClassName(it.screen.packageName(), it.screen.className()))

我看到的例外是

 android.content.ActivityNotFoundException: Unable to find explicit activity class {org.research.development.ui_module_a/org.research.development.ui_module_a.ModuleAScreenOneActivity}; have you declared this activity in your AndroidManifest.xml?

我以为所有AndroidManifiest文件都合并为一个,因此在运行时肯定有一个清单文件,它将包含所有活动吗?

是否不可能使用包名称和类名称作为字符串来启动模块活动?

使用动作意图过滤器是我唯一的选择吗?

android android-manifest
1个回答
1
投票

我以为所有AndroidManifiedt文件都合并为一个,因此在运行时肯定有一个清单文件,它将包含所有活动吗?

他们是。您可以通过打开主清单文件(通常位于app /下)并选择“合并清单”标签来在Android Studio上进行检查。

很可能您没有正确设置类名和包名。为了说明这一点,假设我有一个app模块(主要模块)和另一个模块mymodule。应用模块取决于这一点。我们还说这是一个调试版本,我们配置了“ .debug”后缀。在这种情况下,值将是

package = "com.mypackage.debug"
classname = "com.mypackage.somethingonmymodule.MyActivity"

因此,该软件包应该是操作系统所见的应用程序的软件包(并在与apk捆绑在一起的最终清单中定义),并且该类将在代码库中定义的完全合格的软件包中命名。这两个值都应该在合并清单视图中可见(如上所述)。

或者,如果应用程序模块依赖于mymodule,则可以以其他方式构建Intent:

Intent(context, MyActivity::class.java)
© www.soinside.com 2019 - 2024. All rights reserved.