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

Android深度链接(Deeplink)数据获取:如何获取启动Activity的浏览器跳转链接

获取深度链接的完整启动URL

嘿,你其实已经离答案很近啦!你拿到的Uri data对象里就包含了完整的启动链接,只需要一个简单的操作就能提取出来:

  • 直接调用data.toString(),就能得到浏览器传入的完整URL(比如你示例里的https://example.com/foo/bar?param=1&data=extra)。

完整代码示例

在你的Activity中,可以这样处理(通常放在onCreate方法里):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity_layout);

    Intent intent = getIntent();
    // 先验证动作是否为ACTION_VIEW(深度链接一般通过这个Intent动作启动)
    if (Intent.ACTION_VIEW.equals(intent.getAction())) {
        Uri data = intent.getData();
        if (data != null) {
            // 这里就是你要的完整启动URL
            String fullDeepLinkUrl = data.toString();
            // 后续可以根据需求使用这个URL,比如解析参数、跳转页面等
            Log.d("DeepLinkDebug", "启动应用的链接:" + fullDeepLinkUrl);
        }
    }
}

额外注意:处理重复启动的情况

如果你的Activity设置了singleTask或singleTop的启动模式,当应用已经在后台运行时,新的深度链接会通过onNewIntent方法传递,这时候别忘了更新Intent并重复处理逻辑:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent); // 将最新的Intent设置给当前Activity
    // 复用上面的处理逻辑
    if (Intent.ACTION_VIEW.equals(intent.getAction())) {
        Uri data = intent.getData();
        if (data != null) {
            String fullDeepLinkUrl = data.toString();
            Log.d("DeepLinkDebug", "新的启动链接:" + fullDeepLinkUrl);
        }
    }
}

补充:单独提取URL的部分内容

如果之后你需要单独获取URL的某个部分(比如路径、查询参数),也可以用Uri的其他方法:

  • 获取路径:data.getPath() → 返回/foo/bar
  • 获取单个查询参数:data.getQueryParameter("param") → 返回1
  • 获取所有查询参数:data.getQueryParameterNames() → 返回包含param和data的集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:12:51