You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android项目添加自定义Intent Filter启动失败,包名重复问题求助

问题解决指南

启动失败原因及修复

日志里的包名重复问题,根源是你把MAIN/LAUNCHER启动动作和深度链接的data节点放在了同一个<intent-filter>中。Android系统会认为这个Activity的启动Intent需要同时满足所有过滤条件,导致启动时构造出错误的组件路径com.example.myapp/com.example.myapp.MainActivity。

修复步骤

把<intent-filter>拆分成两个独立的过滤器:

  • 第一个仅负责应用启动(保留MAIN和LAUNCHER)
  • 第二个仅负责处理深度链接(保留所有data节点)

修改后的Manifest代码示例:

<activity android:name=".MainActivity">
    <!-- 应用启动专用过滤器 -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <!-- 深度链接专用过滤器 -->
    <intent-filter>
        <!-- Accepts URIs that begin with "exampleapp://facebook” or "exampleapp://google" "exampleapp://payment -->
        <data android:scheme="exampleapp" android:host="facebook" />
        <data android:scheme="exampleapp" android:host="google" />
        <data android:scheme="exampleapp" android:host="payment" />
        <!-- 补充必要的action和category,确保外部能正常触发深度链接 -->
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

拼写警告处理

Android Studio提示"exampleapp"拼写错误是拼写检查的误报,因为这个自定义scheme不在AS的默认字典中。你可以:

  • 直接忽略该警告
  • 右键点击警告提示,选择"Add to dictionary",后续就不会再出现这个提示

补充说明

之前项目能正常使用可能是因为Activity的包名与应用包名不一致,或者使用的Android Studio版本对intent-filter的解析逻辑有差异,但拆分过滤器是符合Android官方规范的标准做法,能同时解决启动失败和深度链接的问题。

内容的提问来源于stack exchange,提问作者Sercan Samet Savran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:20:51