Android开发中如何从URL提取锚点部分的code参数
问题根因
Uri.getQueryParameter() 仅能解析 URI 中?符号之后的标准查询参数,你提供的 URI 中code参数存放在#符号之后的片段标识符(Hash 部分),不属于标准查询参数范围,因此无法直接获取。
正确实现代码
方案 1:复用 Uri 工具类解析(推荐)
先提取片段内容,再模拟为查询参数解析:
val uri: Uri = Uri.parse(url) val fragment = uri.fragment ?: return // 无片段内容直接返回 // 将片段内容作为查询参数构造临时Uri对象 val fragmentParams = Uri.Builder().query(fragment).build() val code = fragmentParams.getQueryParameter("code") // 此时code即为目标值:d5215173-2be3-4491-bf2a-d9d039a50e97
方案 2:纯字符串拆分实现(无依赖)
val hashContent = url.substringAfterLast('#', "") val paramPairs = hashContent.split('&') var code: String? = null for (pair in paramPairs) { val keyValue = pair.split('=', limit = 2) if (keyValue.size == 2 && keyValue[0] == "code") { code = keyValue[1] break } }
内容的提问来源于stack exchange,提问作者Morozov
相关产品推荐
相关产品推荐

