Android中打开带参数的Deep Link,如何获取缺失的URL参数?
Android Intent传递URL参数丢失的解决方法
你构造的带参数Intent链接intent://com.example/somePath?someVariableA=1#Intent;package=com.example;scheme=app;end;之所以丢失参数,是因为链接中的?被浏览器解析为锚点#的前置分隔符,导致参数部分未被识别为URL的一部分。可以通过以下方式解决:
转义URL中的问号:将原URL里的
?替换为URL转义符%3F,构造后的Intent链接应为:intent://com.example/somePath%3FsomeVariableA=1#Intent;package=com.example;scheme=app;end;Android端解析参数:应用接收到Intent后,通过
Uri对象的API提取参数,示例代码:Uri intentData = getIntent().getData(); if (intentData != null) { String someVariableA = intentData.getQueryParameter("someVariableA"); // 这里处理参数逻辑 }验证Manifest中的Intent Filter配置:确保你的Intent Filter正确匹配带参数的路径,示例配置:
<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="app" android:host="com.example" android:pathPrefix="/somePath" /> </intent-filter>
转义后的%3F会被系统正确识别为URL的参数起始标记,这样Android就能完整解析包含参数的Uri了。
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

