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

Android Deep Linking未设默认打开时遇同类应用弹窗问题求助

解决Deep Link触发时弹出应用选择弹窗的问题

嘿,我来帮你搞定这个困扰!你遇到的问题其实是因为系统检测到有多个应用都能处理这个Deep Link的Intent,所以才会弹出选择器让用户选择。下面给你两个靠谱的解决方案,按需选用:

方案一:使用Android App Links(推荐,Android 6.0+)

这是官方推荐的方式,通过验证域名归属,让系统直接默认打开你的应用,完全跳过选择弹窗。步骤如下:

  1. 修改Manifest中的Intent Filter
    在你现有的VIEW类型intent filter里添加android:autoVerify="true"属性,并且建议把scheme改成https(App Links要求scheme为http或https):

    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:host="xxxxxxxx" android:scheme="https" />
    </intent-filter>
    
  2. 配置域名验证文件
    在你的域名根目录或者.well-known目录下,上传一个名为assetlinks.json的文件,内容格式如下:

    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target": {
        "namespace": "android_app",
        "package_name": "你的应用包名",
        "sha256_cert_fingerprints": ["你的应用签名的SHA256指纹"]
      }
    }]
    
    • 如何获取SHA256指纹?可以用这个命令(替换成你的签名文件路径和别名):
      keytool -list -v -keystore /path/to/your/keystore.jks -alias your-alias
      

    上传后,系统会自动验证这个文件,验证通过后,点击对应链接就会直接打开你的应用啦。

方案二:使用唯一的自定义Scheme(兼容低版本)

如果你的应用需要兼容Android 6.0以下的系统,或者不想用http/https scheme,可以把自定义scheme设置得足够独特,比如包含你的应用包名,这样其他应用几乎不会和你冲突:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:host="xxxxxxxx" android:scheme="com.yourcompany.yourapp" /> <!-- 用包名相关的scheme -->
</intent-filter>

这种方式能大幅降低冲突概率,但还是存在极小的可能性(比如其他应用也用了相同的scheme),所以如果是高版本系统,还是优先用App Links更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:05