我正在为 Android 创建一个 Intent,用于发送电子邮件。
我对 Uri.fromParts 的行为感到困惑。
小米代码:
这很好用!
uri=Uri.parse(
"mailto:" + toAddress +
(subject != null ?
("?" + "subject=" + Uri.encode(subject)) :
"")
之前的工作正常,并以以下形式创建一个 Urimailto:[email protected] /cdn-cgi/l/email-protection?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方案之后的内容。
你知道为什么吗?哪种规范方法可以做到这一点?
Uri#fromParts() https://developer.android.com/reference/android/net/Uri.html#fromParts(java.lang.String,%20java.lang.String,%20java.lang.String)
从给定的组件创建一个不透明的 Uri。对 ssp 进行编码,这意味着此方法不能用于创建分层 URI。
你打电话时buildUpon()
对此,Builder
包含方案、方案特定部分(ssp)和片段(在您的情况下为 null)。
appendQueryParameter()
然后转动Builder
到层次结构,删除不透明的 ssp 数据。
我不认为有“规范”的方式。只是不要混合分层和不透明的构建器。
有关幕后发生的详细信息,请阅读source http://androidxref.com/8.0.0_r4/xref/frameworks/base/core/java/android/net/Uri.java.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)