活动必须导出或包含意图过滤器

Posted

技术标签:

【中文标题】活动必须导出或包含意图过滤器【英文标题】:The activity must be exported or contain an intent-filter 【发布时间】:2017-03-23 08:12:33 【问题描述】:

当我尝试运行我的应用程序时,它会显示以下错误

Error running Dashboard: The activity must be exported or contain an intent-filter

我该如何解决这个错误?

【问题讨论】:

您可以通过向我们展示您的一些代码来解决它。也发布您的androidManifest.xml 您如何尝试“运行您的应用程序”?从 IDE 启动?从主屏幕点击应用程序图标?我们不是读心者,请给我们更多数据! 在这种情况下,它与 AndroidManifest 无关,而是 Android Studio 中的一个单独设置,实际上是带有 AS 插件的 Intellij Idea。 【参考方案1】:

我将Select Run/Debug Configuration 从我的MainActivity 更改为App,它开始工作了。选择应用配置快照:

【讨论】:

我已经无情地用谷歌搜索了这个,我看到的只是一排配置或点击按钮,但没有解释为什么或这是什么。这实际上在做什么,为什么它不是自动的? 这应该是公认的答案。此机制是针对不同运行/调试配置设置的配置设置。请注意,错误消息(与 Android 中的往常一样)将您完全引向错误的方向。 我选择了运行 |编辑配置 |发射 |默认活动 这是“始终”设置的地方。它有些如何更改为“指定活动”【参考方案2】:

仔细检查你的清单,你的第一个活动应该有标签

    <intent-filter>
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

活动标签内部。

如果这不起作用,请查找位于运行按钮(绿色播放按钮)左侧的目标构建,它应该针对“app”文件夹,而不是特定活动。如果它不针对“应用程序”,只需单击它并从下拉列表中选择“应用程序”。

希望对你有帮助!

【讨论】:

不知道这是导致问题的原因。荣誉。这帮助很大。 这,这对我有帮助...通过选择应用程序而不是活动名称。【参考方案3】:

首先检查您的“manifest.xml”文件中是否设置了启动活动:

<activity android:name=".activityName">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

如果设置正确,接下来检查您的运行/调试配置是否设置为“App”,

如果缺少“应用”配置 - 您需要先选择“编辑配置”来添加它

如果您没有“App”配置,则需要创建一个,否则选择“App”配置并跳过创建步骤。此外,如果您的配置已损坏,您可能需要将其删除,但首先要备份您的项目。要删除损坏的配置,请展开“Android App”节点并选择“-”按钮来选择它。

要创建新配置,请选择“+”按钮并选择“Android 应用”

如果您刚刚创建了配置,您将看到以下默认名称值“Unnamed”,模块将具有值“&lt;no module&gt;”,然后点击“Apply”和“OK” .

将此名称设置为“App”并选择“app”作为模块。

接下来选择'App'作为运行配置并运行。

就是这样!

【讨论】:

这对我有用!我缺少一个 标记,因为我开始了一个空项目。【参考方案4】:

只需在您的活动中添加意图过滤器标签

例如 ::

    <activity
        android:name=".activityName">
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

【讨论】:

这对我有帮助,虽然我只是使用了这段代码: 在新活动中我创建。确保将其放在 之间【参考方案5】:

只需使用 Run(绿色播放图标)从下拉菜单中选择应用程序。 它将运行整个应用程序而不是特定的活动。如果它没有帮助尝试在 ManiFest.xml 文件中的该活动中使用。 谢谢你

【讨论】:

这个问题好像是很久以前发的,所以现在发帖不会引起太多关注。【参考方案6】:

如果您尝试启动特定活动而不是运行启动器。 当您选择该活动时。 android studio 可能会通过这个错误, 要么你需要让它启动器活动,就像其他人回答的那样。 或者您需要在清单内的活动标签中添加android:exported="true"。它允许任何外部工具直接运行您的特定活动,而无需将其设为启动器活动

【讨论】:

【参考方案7】:

在 manifest.xml 中,选择您要启动的活动并设置此信息:

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

【讨论】:

【参考方案8】:

这是因为您尝试从不是启动器活动的活动启动您的应用程序。尝试从启动器活动运行它或将您当前的活动类别更改为 android Manifest 中的启动器。

【讨论】:

【参考方案9】:

有时,如果您更改启动活动,则必须在运行下拉播放按钮中单击编辑,并在应用程序中将启动选项活动更改为您在清单中设置了 LAUNCHER 意图过滤器的活动。

【讨论】:

【参考方案10】:

检查您的清单,打开扩展名为 .xml 的文件,然后列出您的所有活动,您的第一个活动应该在其标签中包含此代码

<intent-filter>
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

或者您可以从配置中选择另一种方式,即运行按钮左侧的下拉列表,从中选择应用程序 希望它会有所帮助!

【讨论】:

以上是关于活动必须导出或包含意图过滤器的主要内容,如果未能解决你的问题,请参考以下文章

包括两个意图过滤器,共享相同的活动、动作、类别和 mimeType

如何在android中使用意图过滤器获取数据

意图过滤器:intent.getData() 返回 null

清单与活动中的广播接收器注册

仅针对文件的意图过滤器

Oculus Go 文件关联与意图过滤器