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

如何通过含额外数据的链接启动或安装Android应用?

实现带UUID参数的Google Play链接跳转与参数传递方案

一、二维码链接构造

生成的二维码链接需同时兼容应用已安装时的直接跳转,以及未安装时的商店引导,格式如下:

https://play.google.com/store/apps/details?id=com.your.app.package&referrer=uuid%3D{你的UUID值}

注意:referrer参数需对UUID进行URL编码(比如=编码为%3D),避免参数解析异常。

二、应用已安装时的参数获取

通过配置App Links让系统优先打开已安装应用,并从跳转Intent中解析UUID:

  1. 配置AndroidManifest
    在接收跳转的Activity(通常是主Activity)中添加如下intent-filter,确保应用能拦截Play商店的链接:
<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
        android:scheme="https"
        android:host="play.google.com"
        android:pathPrefix="/store/apps/details?id=com.your.app.package" />
</intent-filter>

需在Google Search Console完成域名验证,确保autoVerify生效。

  1. 解析Intent中的参数
    在Activity的onCreate或onNewIntent方法中提取UUID:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    handleIntent(intent)
}

override fun onNewIntent(intent: Intent?) {
    super.onNewIntent(intent)
    intent?.let { handleIntent(it) }
}

private fun handleIntent(intent: Intent) {
    intent.data?.let { uri ->
        uri.getQueryParameter("referrer")?.let { referrerStr ->
            // 解析出UUID(假设referrer格式为uuid=xxx)
            val uuid = referrerStr.split("=")[1]
            // 执行你的业务逻辑,比如关联用户、统计等
        }
    }
}

三、应用未安装时的参数传递与获取

使用Google官方的Install Referrer Library获取安装时的referrer参数,从而拿到UUID:

  1. 集成依赖
    在模块级build.gradle中添加依赖:
implementation "com.android.installreferrer:installreferrer:2.2"
  1. 获取并解析Referrer
    在应用启动时调用Install Referrer Client获取参数:
private fun getInstallReferrer() {
    val referrerClient = InstallReferrerClient.newBuilder(this).build()
    referrerClient.startConnection(object : InstallReferrerStateListener {
        override fun onInstallReferrerSetupFinished(responseCode: Int) {
            when (responseCode) {
                InstallReferrerClient.InstallReferrerResponse.OK -> {
                    val response = referrerClient.installReferrer
                    val referrerStr = response.installReferrer
                    // 解析UUID
                    referrerStr.split("=").takeIf { it.size >= 2 }?.let {
                        val uuid = it[1]
                        // 处理UUID逻辑
                    }
                    referrerClient.endConnection()
                }
                InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED,
                InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
                    // 处理不兼容或服务不可用的情况,比如降级逻辑
                    referrerClient.endConnection()
                }
            }
        }

        override fun onInstallReferrerServiceDisconnected() {
            // 服务断开时可尝试重新连接
            // referrerClient.startConnection(this)
        }
    })
}

调用时机建议放在主Activity的onCreate中,确保应用启动后能及时获取参数。

四、关键注意事项

  • 测试已安装场景:使用adb命令模拟跳转,验证参数是否能正常解析:
adb shell am start -a android.intent.action.VIEW -d "https://play.google.com/store/apps/details?id=com.your.app.package&referrer=uuid%3Dtest-uuid-123"
  • 测试未安装场景:通过生成的二维码链接安装应用,启动后检查是否能获取到UUID。
  • 避免referrer丢失:不要在链接中添加过多无关参数,确保referrer参数的格式和编码正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:08:34