Uri.fromParts 和 Uri.parse 的区别?
DIfference between Uri.fromParts and Uri.parse?
我正在为 Android 创建一个发送电子邮件的 Intent。
我对 Uri.fromParts 的行为感到困惑。
小米代码:
这很好用!
uri=Uri.parse(
"mailto:" + toAddress +
(subject != null ?
("?" + "subject=" + Uri.encode(subject)) :
"")
之前的工作正常,并以 mailto:john@doe.com?subject=Test
的形式创建一个 Uri
但是如果我尝试使用 Uri.from 部分,这个示例:
uriBuilder=Uri.fromParts("mailto",toAddress,null).buildUpon();
if (subject!=null) {
uriBuilder.appendQueryParameter("subject",subject);
}
uri=uriBuilder.build();
我收到一个错误。最终的 uri 是 mailto:?subject=Test
中间是正确的,但是当我使用appendQueryParameter时,它删除了mailto scheme之后的内容。
你知道为什么吗?执行此操作的规范方法是什么?
Creates an opaque Uri from the given components. Encodes the ssp which means this method cannot be used to create hierarchical URIs.
当您对此调用 buildUpon()
时,Builder
包含方案、方案特定部分 (ssp) 和片段(在您的情况下为 null)。
appendQueryParameter()
然后将 Builder
变为分层结构,删除不透明的 ssp 数据。
我认为没有 "canonical" 方法。只是不要混合分层和不透明的构建器。
有关幕后情况的详细信息,请阅读 source。
我正在为 Android 创建一个发送电子邮件的 Intent。
我对 Uri.fromParts 的行为感到困惑。
小米代码: 这很好用!
uri=Uri.parse(
"mailto:" + toAddress +
(subject != null ?
("?" + "subject=" + Uri.encode(subject)) :
"")
之前的工作正常,并以 mailto:john@doe.com?subject=Test
但是如果我尝试使用 Uri.from 部分,这个示例:
uriBuilder=Uri.fromParts("mailto",toAddress,null).buildUpon();
if (subject!=null) {
uriBuilder.appendQueryParameter("subject",subject);
}
uri=uriBuilder.build();
我收到一个错误。最终的 uri 是 mailto:?subject=Test
中间是正确的,但是当我使用appendQueryParameter时,它删除了mailto scheme之后的内容。
你知道为什么吗?执行此操作的规范方法是什么?
Creates an opaque Uri from the given components. Encodes the ssp which means this method cannot be used to create hierarchical URIs.
当您对此调用 buildUpon()
时,Builder
包含方案、方案特定部分 (ssp) 和片段(在您的情况下为 null)。
appendQueryParameter()
然后将 Builder
变为分层结构,删除不透明的 ssp 数据。
我认为没有 "canonical" 方法。只是不要混合分层和不透明的构建器。
有关幕后情况的详细信息,请阅读 source。