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

如何从动态链接中接收字符串?附Android动态链接分享代码

如何从分享的动态链接中接收groupUid等参数?

嘿,我来帮你搞定这个动态链接参数接收的问题!你已经通过Intent分享了带groupUid的动态链接,现在要在接收端把这个参数取出来对吧?下面分两种方法给你讲,按需选就行~

方法一:手动解析链接参数(轻量无依赖)

当用户点击链接打开你的App时,系统会通过Intent把链接数据传递给对应的Activity,我们直接从Intent里拿数据解析就行:

1. 在Activity中获取Intent数据

不管是App首次启动还是从后台唤起,都要处理Intent:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_target);
    
    // 处理启动时的Intent
    handleDynamicLink(getIntent());
}

// 如果App在后台被唤起,需要重写这个方法更新Intent
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    handleDynamicLink(intent);
}

2. 解析groupUid参数

拿到Uri后,直接通过getQueryParameter()获取指定参数:

private void handleDynamicLink(Intent intent) {
    Uri deepLinkUri = intent.getData();
    if (deepLinkUri != null) {
        // 直接从动态链接中取出groupUid
        String groupUid = deepLinkUri.getQueryParameter("groupUid");
        
        if (groupUid != null) {
            // 拿到参数啦!这里写你的业务逻辑,比如跳转群组页面
            Toast.makeText(this, "收到群组ID:" + groupUid, Toast.LENGTH_SHORT).show();
        }
        
        // 如果你还需要解析链接中嵌套的深层链接(就是`link`参数里的地址),可以这么做:
        String innerLink = deepLinkUri.getQueryParameter("link");
        if (innerLink != null) {
            try {
                Uri innerUri = Uri.parse(innerLink);
                // 解析深层链接里的其他参数(如果有的话)
                String otherParam = innerUri.getQueryParameter("someParam");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

如果你的动态链接是Firebase生成的,用官方SDK解析会更可靠——它能自动处理链接跳转逻辑、参数解码等边缘情况,推荐在正式项目中使用:

1. 添加依赖

在App级别的build.gradle中添加SDK依赖:

implementation 'com.google.firebase:firebase-dynamic-links:21.2.0'

2. 解析动态链接

在Activity中调用SDK的API获取参数:

private void parseDynamicLinkWithFirebase() {
    FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, pendingDynamicLinkData -> {
            Uri deepLink = null;
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.getLink();
            }
            
            if (deepLink != null) {
                // 直接获取groupUid参数,SDK会自动处理参数位置
                String groupUid = deepLink.getQueryParameter("groupUid");
                if (groupUid != null) {
                    // 处理你的业务逻辑
                    Log.d("DynamicLink", "获取到群组ID:" + groupUid);
                }
            }
        })
        .addOnFailureListener(this, e -> {
            Log.w("DynamicLink", "解析动态链接失败", e);
        });
}

3. 配置Manifest的Intent Filter

不管用哪种方法,都要在接收链接的Activity中配置intent-filter,这样系统才知道要打开你的App:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    
    <!-- 匹配你的动态短链接域名 -->
    <data
        android:host="y28rt.app.goo.gl"
        android:scheme="https" />
        
    <!-- 匹配深层链接的域名和路径(如果需要) -->
    <data
        android:host="Lesn.com"
        android:scheme="https"
        android:pathPrefix="/joinGroup" />
</intent-filter>

最后提醒

  • 测试的时候,可以直接用adb命令模拟链接唤起:adb shell am start -W -a android.intent.action.VIEW -d "你的完整动态链接" c.kristofer.jax2
  • 如果参数解析失败,先检查Intent是否正确传递,以及链接的参数格式是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:00:12