Android Studio开发YouTube应用报错:活动必须导出或包含intent-filter
解决「The activity must be exported or contain an intent-filter」错误
Hey,我之前开发Android应用时也踩过这个坑!这个错误的核心原因是Android系统找不到启动你YoutubeActivity的正确入口规则——要么是这个活动没被标记为允许外部启动,要么是没配置intent-filter声明它的角色(比如主入口)。
关键解决方案:检查并修改AndroidManifest.xml
问题不在你提供的YoutubeActivity.java代码里,而是在清单配置文件中。你需要做以下操作:
- 打开项目中的
AndroidManifest.xml文件(通常在app/src/main/目录下) - 找到对应
YoutubeActivity的<activity>标签,按场景配置:
场景1:YoutubeActivity是应用的主启动入口
如果这是用户打开APP时第一个启动的页面,必须添加intent-filter并设置exported="true":
<activity android:name=".YoutubeActivity" android:exported="true"> <intent-filter> <!-- 声明这是应用的主入口 --> <action android:name="android.intent.action.MAIN" /> <!-- 声明这是启动器中显示的入口 --> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
场景2:YoutubeActivity只是被内部/其他组件调用的页面
如果这个活动不是主入口,只是在应用内部跳转或者被其他应用调用,需要明确设置exported属性:
- 允许外部应用调用:
android:exported="true" - 仅内部应用调用:
android:exported="false"(但如果是通过隐式Intent启动,还是需要配合对应的intent-filter)
额外注意事项
- 从Android 12(API 31)开始,所有活动都必须显式设置
exported属性,否则编译会报错 - 不要同时给多个活动设置
MAIN+LAUNCHER的intent-filter,否则系统会不知道优先启动哪个页面 - 修改完配置后,记得点击Android Studio顶部的「Sync Project with Gradle Files」按钮,再重新运行应用
按上述步骤调整后,这个错误应该就能解决啦!
内容的提问来源于stack exchange,提问作者moee
相关产品推荐
相关产品推荐

