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

Chrome自定义标签页页面切换时获取加载URL的方法

Chrome自定义标签页无内嵌按钮获取加载链接的解决方案

核心思路:利用授权回调URL拦截

Chrome自定义标签页本身不支持直接监听所有URL加载,但在授权场景下,可通过配置专属回调Scheme/Host捕获授权完成后的跳转链接,这是无需内嵌按钮的合规方案。

具体实现步骤

  1. 注册回调Activity
    在AndroidManifest.xml中添加能处理自定义回调URL的Activity配置:

    <activity android:name=".AuthCallbackActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <!-- 替换为你的专属回调Scheme,比如myapp://auth -->
            <data android:scheme="myapp" android:host="auth" />
        </intent-filter>
    </activity>
    
  2. 构造带回调地址的授权URL
    向授权服务器发起请求时,将上述回调URL作为redirect_uri参数传入:

    String authUrl = "https://auth.example.com/authorize?client_id=你的客户端ID&redirect_uri=myapp://auth&response_type=code";
    
  3. 在回调Activity中获取跳转链接
    授权完成后,Chrome自定义标签页会跳转至回调Activity,此时可通过Intent拿到目标URL:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Uri data = getIntent().getData();
        if (data != null) {
            // 此处获取到授权完成后的回调URL,包含授权码等关键信息
            String authCode = data.getQueryParameter("code");
            // 后续处理授权逻辑
        }
        finish(); // 处理完成后关闭回调页面
    }
    

辅助方案:用CustomTabsCallback监听导航状态

若需监听页面加载的关键节点(无需具体URL),可通过CustomTabsCallback的onNavigationEvent方法实现,仅作为回调URL方案的补充:

CustomTabsCallback callback = new CustomTabsCallback() {
    @Override
    public void onNavigationEvent(int navigationEvent, Bundle extras) {
        super.onNavigationEvent(navigationEvent, extras);
        switch (navigationEvent) {
            case CustomTabsCallback.NAVIGATION_STARTED:
                // 页面开始加载
                break;
            case CustomTabsCallback.NAVIGATION_FINISHED:
                // 页面加载完成
                break;
        }
    }
};

// 绑定服务并启动自定义标签页
CustomTabsClient.bindCustomTabsService(context, "com.android.chrome", new CustomTabsServiceConnection() {
    @Override
    public void onCustomTabsServiceConnected(ComponentName name, CustomTabsClient client) {
        client.warmup(0L);
        CustomTabsSession session = client.newSession(callback);
        CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(session);
        builder.build().launchUrl(context, Uri.parse(authUrl));
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {}
});

注意事项

  • 回调URL的Scheme需为应用专属,避免与其他应用冲突;
  • 需在授权服务器后台配置该回调URL为合法重定向地址;
  • CustomTabsCallback无法获取具体URL,仅能监听导航事件,核心逻辑仍依赖回调URL拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:40:58