Android Deep Link含&字符时参数截断问题求助
解决Android Deep Link多参数被截断的问题
嘿,这个问题我之前帮不少开发者搞定过,本质是转义字符处理不对加上Intent Filter的小细节没做好,咱们一步步来解决:
1. 先把链接里的分隔符改对
你现在用的&是HTML环境下的转义字符,但直接放到App Deep Link里,Android系统会把它当成参数值的一部分,而不是用来分隔多个参数的&。所以首先要把链接改成原始格式:myapp://app.com/login-with-token?email=someEmail&token=sometoken
如果这个链接是从网页里生成的,记得不要对链接里的&做HTML转义,或者直接输出原始的&就行——浏览器会正确识别并把完整链接传给你的App。
2. 优化Manifest里的Intent Filter配置
你的现有配置其实能匹配路径,但为了让系统更精准地解析带多参数的链接,建议补充mimeType并缩小路径匹配范围(可选,但更规范):
<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:scheme="myapp" android:host="app.com" android:pathPrefix="/login-with-token" android:mimeType="text/plain"/> <!-- 加这个帮助系统正确识别链接类型 --> </intent-filter>
3. 代码里正确提取所有参数
最后,确保你在接收Intent的Activity里,用正确的方法获取所有Query参数,别只取第一个:
// 在目标Activity的onCreate或者onNewIntent方法里 intent.data?.let { uri -> val email = uri.getQueryParameter("email") val token = uri.getQueryParameter("token") // 这里处理拿到的邮箱和token就行 }
测试小技巧
你可以用adb命令快速验证链接是否能被正确解析:
adb shell am start -W -a android.intent.action.VIEW -d "myapp://app.com/login-with-token?email=test@example.com&token=123456" com.your.package.name
内容的提问来源于stack exchange,提问作者Arkalyk Akash
相关产品推荐
相关产品推荐

