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

如何阻止Android App Links在浏览器内导航时自动唤起应用?

解决Chrome浏览器内导航时唤起Android应用的问题

针对自定义Scheme链接(scheme://host/path)

如果你的链接使用自定义Scheme而非标准http/https,Chrome会默认唤起注册该Scheme的应用。要避免浏览器内导航时触发应用,可在目标Activity中拦截并跳转回浏览器:

  • 在Activity的onCreate或onNewIntent方法中,判断Intent的来源是否为Chrome内部导航:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        handleIntent(getIntent());
    }
    
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        handleIntent(intent);
    }
    
    private void handleIntent(Intent intent) {
        Uri data = intent.getData();
        if (data == null) return;
    
        // 检查来源是否为Chrome浏览器
        Uri referrer = getReferrer();
        if (referrer != null && referrer.getScheme().equals("android-app") 
            && referrer.getHost().equals("com.android.chrome")) {
            // 替换为对应的http/https网页链接(如果存在),或直接用原Scheme让浏览器处理
            Uri webUri = Uri.parse(data.toString().replace("scheme://", "https://"));
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, webUri);
            browserIntent.setPackage("com.android.chrome");
            startActivity(browserIntent);
            finish();
            return;
        }
    
        // 正常处理应用内页面逻辑
        setContentView(R.layout.activity_target);
    }
    

如果是标准App Links(http/https),Chrome内部导航时唤起应用通常是因为用户之前选择了「总是打开」该链接。解决方式包括:

  • 引导用户清除Chrome偏好:让用户在Chrome的「设置 > 应用 > 关联应用」中,找到你的应用并重置链接打开方式。
  • 在应用内拦截处理:同样通过判断Intent来源,若来自Chrome内部导航,则跳转回浏览器打开链接,代码逻辑与自定义Scheme场景类似,无需替换Scheme直接使用原http/https Uri即可。

优化Manifest配置(辅助方案)

  • 确保Intent Filter仅精确匹配需要从外部唤起的路径,避免使用过于宽泛的pathPattern(如.*),减少不必要的触发。
  • 保留android:autoVerify="true"以确保谷歌搜索等外部来源的链接能正常唤起应用,同时限制内部导航的触发条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:46:22