无法在 Android 库模块中启动 Activity

Posted

技术标签:

【中文标题】无法在 Android 库模块中启动 Activity【英文标题】:Cannot Launch Activity in Android Library Module 【发布时间】:2015-01-14 14:52:24 【问题描述】:

在我的 android 应用项目中,我添加了一个模块,其中包含一个名为“SampleDataMenuActivity”的活动。此活动没有什么特别之处 - 它是使用 Android Studio 中的“新模块”->“Android 库”对话框添加的,并包含 Android Studio 生成的“Hello World”代码。

应用程序的 AndroidManifest.xml 包括(来自模块):

<activity
    android:name="com.sample.sampledata.SampleDataMenuActivity" >
    <intent-filter>
        <action android:name="android.intent.action.SampleDataMenuActivity" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

在app的build.gradle中:

dependencies 
    (...)
    compile project(':sampledata')

在项目的settings.gradle中:

include ':sampledata', ':app'

在我的应用程序的主要活动中,我想使用以下方法导航到模块中的活动:

startActivity(new Intent("com.sample.sampledata.SampleDataMenuActivity"));

项目构建得很好,但是当我点击应该将我带到模块中的活动的按钮时,它失败了,报告:

android.content.ActivityNoFoundException: No Activity found to handle Intent ( act=com.sample.sampledata.SampleDataMenuActivity )

我错过了什么?

【问题讨论】:

【参考方案1】:

我发现了错误,也许我应该删除这个问题。但由于它被赞成,其他人可能会对这个答案感兴趣:

清单应说明:

<activity
    android:name="com.sample.sampledata.SampleDataMenuActivity" >
    <intent-filter>
        <action android:name="com.sample.sampledata.SampleDataMenuActivity" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

【讨论】:

为什么里面有?只是好奇。我有点想做同样的事情。 可能有更多有资格的人来回答这个问题,但我会尝试一下:当使用startActivity(new Intent("&lt;action_name&gt;") 启动活动时,应用会查找与操作名称匹配的意图,然后启动相应的活动。为了启动一个活动,你可以给它起任何你想要的名字,但据我了解,使用活动类的完整路径被认为是一种很好的做法,并使你的代码更具可读性和可维护性.. 上述答案和问题中的代码看起来很相似。那有什么区别呢? Category android.intent.category.DEFAULT 通常用于启动活动的意图。问题中给出的活动名称没有意义。这只是一个错字或复制/粘贴问题。

以上是关于无法在 Android 库模块中启动 Activity的主要内容,如果未能解决你的问题,请参考以下文章

无法解析来自库模块的 Kotlin Android 扩展布局

无法在库模块中使用本地.aar文件

Android-无法在单独的模块中使用 org.greenrobot.eventbus

Android学习笔记-UI开发

Kotlin + Flow 实现的 Android 应用初始化任务启动库

PHP 启动:无法加载动态库 'php_intl.dll'- 找不到指定的模块