如何通过含额外数据的链接启动或安装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:
- 配置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生效。
- 解析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:
- 集成依赖
在模块级build.gradle中添加依赖:
implementation "com.android.installreferrer:installreferrer:2.2"
- 获取并解析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
相关产品推荐
相关产品推荐

