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



我目前的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文件都合并为一个,所以在运行时肯定有一个清单文件,它将保存所有活动?

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

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

我认为所有 AndroidManifest 文件都合并为一个,所以在运行时肯定有一个清单文件,它将保存所有活动?

他们是。您可以在Android Studio上通过打开主清单文件(通常位于app/下(并选择"合并清单"选项卡来检查这一点。

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

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

因此,包应该是操作系统看到的应用包(并在与 apk 捆绑的最终清单中定义(,类名应该是你在代码库中定义的完全限定包。这两个值都应在合并的清单视图中可见(如上所述(。

或者,如果应用程序模块依赖于 mymodule,您可以通过不同的方式构建 Intent:

Intent(context, MyActivity::class.java)

相关内容

  • 没有找到相关文章

最新更新