活动必须导出或包含意图过滤器
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
”,模块将具有值“<no module>
”,然后点击“Apply
”和“OK
” .
将此名称设置为“App
”并选择“app
”作为模块。
接下来选择'App
'作为运行配置并运行。
就是这样!
【讨论】:
这对我有用!我缺少一个只需在您的活动中添加意图过滤器标签
例如 ::
<activity
android:name=".activityName">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
【讨论】:
这对我有帮助,虽然我只是使用了这段代码:只需使用 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