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
相关产品推荐
相关产品推荐

