deeplink 在使用导航组件时发送不完整的序列化参数
deeplink sends incomplete serialized argument while using navigation component
我想使用导航组件和深层链接打开片段。
val serializedUser = Gson().toJson(user)
findNavController().navigate(Uri.parse("myapp://?user=${serializedUser}"))
但在目标片段中有时参数不完整。
val serializedUser = arguments?.getString("user")
val post = Gson().fromJson(serializedUser, User::class.java)
并出现此错误:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1156 path $.text
如果我在目标片段中记录 serializedUser
这不完整并且它末尾的某些字符不存在,而在第一个片段中它是完整的。
序列化模型是一个长字符串,但它的长度似乎与此问题无关。因为一些更长的序列化模型工作。
只有在使用导航组件深层链接时才会出现此问题。
Uri.parse(String)
解析编码的 URI 字符串,但是您没有编码 serializedUser
.
要解决此问题,您应该使用 Uri.fromParts(...)
or the Uri.Builder
class,而不需要您对 serializedUser
.
进行编码
我想使用导航组件和深层链接打开片段。
val serializedUser = Gson().toJson(user)
findNavController().navigate(Uri.parse("myapp://?user=${serializedUser}"))
但在目标片段中有时参数不完整。
val serializedUser = arguments?.getString("user")
val post = Gson().fromJson(serializedUser, User::class.java)
并出现此错误:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1156 path $.text
如果我在目标片段中记录 serializedUser
这不完整并且它末尾的某些字符不存在,而在第一个片段中它是完整的。
序列化模型是一个长字符串,但它的长度似乎与此问题无关。因为一些更长的序列化模型工作。
只有在使用导航组件深层链接时才会出现此问题。
Uri.parse(String)
解析编码的 URI 字符串,但是您没有编码 serializedUser
.
要解决此问题,您应该使用 Uri.fromParts(...)
or the Uri.Builder
class,而不需要您对 serializedUser
.