我目前的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)