活动必须被导出或包含一个意图过滤器。

82

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

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

我该如何解决这个错误?


2
你可以通过展示一些代码来解决这个问题。同时,也请发布你的AndroidManifest.xml文件。 - pleft
你是如何尝试“运行你的应用程序”的?从IDE启动?从主屏幕点击应用程序图标?我们不是心灵读者,请给我们更多数据! - David Wasser
在这种情况下,与AndroidManifest无关,而是与Android Studio中的单独设置以及实际上使用AS插件的Intellij Idea有关。 - Daniel Viglione
10个回答

174

我将我的MainActivity选择运行/调试配置更改为App,然后它开始工作。选择“App”配置快照:

在此输入图片描述


2
我已经不断地谷歌搜索了这个问题,但是我只看到了一些配置或按钮的单行说明,却没有解释为什么或这是做什么的。这实际上是在做什么,为什么它不是自动化的? - red888
2
这应该是被接受的答案。 这个机制是用于不同的运行/调试配置设置的配置设置。请注意,错误消息(通常在Android中)完全指向了错误的方向。 - Vincent
我选择了运行|编辑配置|启动|默认活动。这是它“始终”设置的地方。不知何故,它被更改为“指定的活动”。 - Mick
@red888,你之前尝试直接运行了这个活动本身,但是通过选择“app”,你告诉Android Studio去运行这个应用程序。这个答案也解决了我的问题。我不小心将该设置更改为我的活动,因为我无意中选择了一个右键菜单选项。也许你的更改方式不同。 - Alyoshak

58

请仔细检查您的清单文件,确保第一个活动标签正确

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

活动标签内部。

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

希望能帮到你!


完全不知道这就是问题的原因。谢谢你,这帮了我很多忙。 - Abraham Philip
这个,这帮助了我...通过选择应用程序而不是活动名称。 - Shakeel Ahmed

26

首先检查您的'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”。

enter image description here

如果“App”配置丢失 - 您需要首先选择“编辑配置”来添加它。

enter image description here

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

enter image description here

要创建新配置,请选择“+”按钮,然后选择“Android应用程序”

enter image description here

如果您刚刚创建了配置,则会看到以下默认名称值为“Unnamed”,模块的值为“<no module>”,然后点击“Apply”和“OK”。

enter image description here

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

enter image description here

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

enter image description here

就是这样!


这对我有用!我错过了一个<intent>标签,因为我开始了一个空项目。 - ntrch

11

只需在您的活动中添加intent-filter标签即可。

例如:

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

2
尽管我只使用了以下代码,但这确实对我有所帮助:<intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 我把它放在我创建的新活动中间,请确保将其放置在<activity .... </activity>之间。 - uplearned.com

9
如果你想启动一个特定的活动而不是运行启动器,当你选择该活动时,Android Studio可能会出现这个错误,你需要将它设置为启动器活动,就像其他人回答的那样。或者你需要在清单文件中的活动标签内添加android:exported="true"。它允许任何外部工具直接运行你的指定活动,而不必将其设置为启动器活动。

8

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


这个问题似乎是一段时间之前发布的,所以现在发布可能不会引起太多关注。 - Ousmane D.

5
在manifest.xml文件中,选择你想要启动的活动,并设置以下信息:
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

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

2

这是因为您正尝试从非启动器活动启动应用程序。请尝试从启动器活动运行它,或在 Android 清单中将当前活动类别更改为启动器。


1
请检查您的清单文件,使用.xml扩展名打开该文件,然后列出您的所有活动。您的第一个活动应该在其标签中包含此代码。
<intent-filter>
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

或者你可以从配置中选择另一种方法,即在运行按钮左侧的下拉列表中选择“App”。 希望这能帮助你!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接