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

Flutter Android Release模式下重定向URI出现重复选项问题

解决Flutter Spotify授权时Android弹出多个应用选项的问题

问题分析

出现两个应用选项的核心原因是系统识别到多个能处理spotify-callback URI的组件——要么是你的应用内部存在重复的Intent Filter配置,要么是自定义Scheme未做专属关联导致浏览器也参与竞争。删除配置后无法获取令牌,是因为授权回调失去了接收入口。

解决方案

1. 排查并移除重复的Intent Filter

  • 打开Android Studio的Merged Manifest视图(Manifest编辑器底部标签),检查最终生成的清单文件中是否存在多个包含spotify-callback scheme的<intent-filter>。
  • 确保只有一个针对回调URI的Intent Filter,配置在主Activity下,示例如下:
    <activity android:name="com.your.app.package.MainActivity">
        <!-- 其他原有配置 -->
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="spotify-callback" />
        </intent-filter>
    </activity>
    
  • 检查build.gradle中是否有构建变体(debug/release)额外注入的Manifest配置,避免合并后出现重复条目。

2. 配置Android App Links实现无选择直接跳转

普通自定义Scheme会触发系统选择器,改用App Links可以让系统直接关联你的应用:

  • 将Spotify开发者后台的重定向URI改为HTTPS格式(比如https://yourdomain.com/spotify-callback)。
  • 在Manifest中更新Intent Filter,添加android:autoVerify="true"并配置HTTPS相关参数:
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data 
            android:scheme="https" 
            android:host="yourdomain.com" 
            android:path="/spotify-callback" />
    </intent-filter>
    
  • 在你的域名下放置assetlinks.json文件,路径为https://yourdomain.com/.well-known/assetlinks.json,内容需包含你release应用的包名和SHA256签名指纹:
    [
        {
            "relation": ["delegate_permission/common.handle_all_urls"],
            "target": {
                "namespace": "android_app",
                "package_name": "com.your.app.package",
                "sha256_cert_fingerprints": ["你的Release签名SHA256指纹"]
            }
        }
    ]
    
  • 获取SHA256指纹可通过命令:
    keytool -list -v -keystore your-release-keystore.jks -alias your-key-alias
    

3. 验证Spotify后台的签名配置

确保Spotify开发者后台中,你应用的重定向URI对应的Android应用签名是release版本的SHA256指纹——debug和release签名不同会导致系统识别为不同应用,触发选择器。

4. 清理系统缓存

进入系统设置 → 应用 → 你的应用 → 清除默认打开方式,再清除应用缓存,避免系统保留旧的URI关联记录。

内容的提问来源于stack exchange,提问作者Joel Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:07:27