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

Chrome自定义标签禁用Cookie、清缓存及Chromium65无痕链接代码修改问题

Chrome Custom Tabs 问题解决方案(Chromium 65)

嘿,针对你在Chromium 65上遇到的这两个Chrome Custom Tabs问题,我来给你梳理下具体的解决方法:

1. 禁用Cookie并清除缓存

Chrome Custom Tabs默认是共享浏览器主Profile的Cookie和缓存的,要实现禁用和清除,得从Chromium源码层面修改:

  • 禁用Cookie:找到CustomTabsServiceImpl中创建WebContents的逻辑,在初始化WebPreferences的时候,添加block_all_cookies = true的配置。这样就能让这个Custom Tab完全禁止Cookie的存储和读取。
  • 清除缓存:
    • 如果只想清除目标站点的缓存,可以在启动Custom Tab前,调用ChromeBrowserProcess::GetInstance()->GetHttpCache()->DeleteEntriesForOrigin(GURL(你的目标URL)),删除对应域名的缓存条目;
    • 如果要彻底禁用缓存,同样在WebPreferences里设置enable_cache = false,这样Custom Tab就不会加载任何缓存内容。

App端通过Intent传参的方式在Chromium 65里支持得不好,直接改CustomTabs相关服务的代码是最可靠的方案。

2. 修复无痕Tab不生效的问题

你用的EXTRA_OPEN_NEW_INCOGNITO_TAB在Chromium 65的Custom Tabs流程里默认是不被处理的——这个参数原本是给Chrome普通页面Intent用的,Custom Tabs有自己独立的启动逻辑。你需要修改CustomTabsServiceImpl的代码来支持这个参数:

  1. 读取无痕标志:在LaunchUrl方法里,先从Intent中获取这个extra的值:

    bool use_incognito = intent.HasExtra("android.intent.extra.OPEN_NEW_INCOGNITO_TAB") &&
                         intent.GetBooleanExtra("android.intent.extra.OPEN_NEW_INCOGNITO_TAB", false);
    
  2. 切换到无痕Profile:创建Custom Tab的时候,根据上面的标志选择对应的Profile。原来的代码大概率是用主Profile(GetOriginalProfile()),现在改成:

    Profile* target_profile = use_incognito ? profile_->GetOffTheRecordProfile() : profile_->GetOriginalProfile();
    

    然后用这个target_profile来创建WebContents和Tab。

  3. 适配无痕UI(可选):如果需要让Custom Tab的UI体现无痕模式(比如顶部栏用深色),可以在CustomTabToolbarView之类的UI类里,判断当前Profile是否为无痕,然后调整样式。

举个简化的代码修改片段:

void CustomTabsServiceImpl::LaunchUrl(const Intent& intent,
                                      const GURL& url,
                                      const SessionID& session_id) {
  // ... 保留原有逻辑 ...
  
  // 读取无痕参数
  bool use_incognito = intent.HasExtra("android.intent.extra.OPEN_NEW_INCOGNITO_TAB") &&
                       intent.GetBooleanExtra("android.intent.extra.OPEN_NEW_INCOGNITO_TAB", false);
  
  // 选择对应的Profile
  Profile* target_profile = use_incognito ? profile_->GetOffTheRecordProfile() : profile_->GetOriginalProfile();
  
  // 创建并添加WebContents到Tab栏
  WebContents* web_contents = CreateWebContents(target_profile, ...);
  browser_->tab_strip_model()->AddWebContents(web_contents, ...);
  
  // ... 其余代码 ...
}

修改后,你的App端传的EXTRA_OPEN_NEW_INCOGNITO_TAB参数就能生效,打开的Custom Tab会使用无痕Profile,不会把浏览记录写到主Profile的历史里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:34:34