java.lang.Object
|---ohos.utils.net.Uri
& public abstract class Uri
& extends Object
& implements Sequenceable, Comparable<Uri&
帮助构建和解析基于 RFC 2396 的统一资源标识符 (URI)。
标准 URI 格式如下:
[scheme:]scheme-specific-part[#fragment]
如 RFC 2396 中所述,URI 分为四种类型:分层、不透明、相对和绝对 URI。
修饰符和类型 | 类 | 描述 |
---|---|---|
static class | Uri.Builder | 快速构造统一资源标识符 (URI) 对象。 |
从接口 ohos.utils.Sequenceable 继承的嵌套类/接口 |
---|
Sequenceable.Producer<T> |
修饰符和类型 | 字段 | 描述 |
---|---|---|
static Uri | EMPTY_URI | 表示一个空的 Uri 对象。 |
static Sequenceable.Producer<Uri> | PRODUCER | 指示 Uri 实例是在对 Parcel 对象进行解组后创建的。 |
修饰符和类型 | 方法 | Description |
---|---|---|
static Uri | appendEncodedPathToUri(UriorgUri, Stringpath) | 将路径附加到指定的 Uri 对象。 |
int | compareTo(Uriother) | 将此对象与指定对象进行比较以进行排序。 |
static String | decode(Stringstr) | 使用 UTF-8 编码解码指定的字符串。 |
static String | encode(Stringstr) | 使用 UTF-8 编码对指定的字符串进行编码。 |
static String | encode(Stringstr, Stringallow) | 使用 UTF-8 编码对 allow 参数指定的字符以外的字符进行编码。 |
boolean | equals(Objectobj) | 指示其他对象是否“等于”这个对象。 |
boolean | getBooleanQueryParam(Stringkey, boolean defaultValue) | 根据指定的key获取当前URI中查询字段的第一个结果,判断结果是否为false或0。 |
abstract String | getDecodedAuthority() | 获取当前URI的解码权限字段。 |
abstract String | getDecodedFragment() | 获取当前URI的解码片段字段。 |
abstract String | getDecodedHost() | 获取当前URI的解码主机字段。 |
abstract String | getDecodedPath() | 获取当前 URI 中的解码路径字段。 |
abstract List<String> | getDecodedPathList() | 获取当前 URI 中已解码路径的列表。 |
abstract String | getDecodedQuery() | 获取当前URI中解码后的查询字段。 |
abstract Map<String,List<String>> | getDecodedQueryParams() | 获取当前 URI 的查询字段中的所有搜索条件和值。 |
abstract String | getDecodedSchemeSpecificPart() | 获取当前 URI 中已解码的 scheme-specific-part 字段。 |
abstract String | getDecodedUserInfo() | 获取当前 URI 的解码后的 user-info 字段。 |
abstract String | getEncodedAuthority() | 获取当前 URI 的编码权限字段。 |
abstract String | getEncodedFragment() | 获取当前 URI的编码片段字段。 |
abstract String | getEncodedHost() | 获取当前 URI 的编码主机字段。 |
abstract String | getEncodedPath() | 获取当前 URI的编码路径字段。 |
abstract String | getEncodedQuery() | 获取当前URI的编码查询字段。 |
abstract String | getEncodedSchemeSpecificPart() | 获取当前 URI 中编码的 scheme-specific-part 字段。 |
abstract String | getEncodedUserInfo() | 获取当前 URI 的编码后的 user-info 字段。 |
String | getFirstQueryParamByKey(Stringkey) | 根据指定的key,获取当前URI中与查询字段匹配的第一个结果。 |
String | getLastPath() | 获取当前 URI 的最后一个路径。 |
Uri | getLowerCaseScheme() | 将当前 Uri 对象中的方案字段设置为小写。 |
abstract int | getPort() | 获取当前URI的端口字段。 |
Set<String> | getQueryParamNames() | 获取当前 URI 的查询字段中的所有名称。 |
List<String> | getQueryParamsByKey(Stringkey) | 根据指定的key,获取当前URI中与查询字段匹配的所有结果。 |
String | getScheme() | 获取当前 URI 的 scheme 字段。 |
static Uri | getUriFromFile(Filefile) | 基于给定文件创建分层 Uri 对象。 |
static Uri | getUriFromFileCanonicalPath(Filefile) | 根据给定文件的规范路径创建分层 Uri 对象。 |
static Uri | getUriFromParts(Stringscheme, Stringssp, Stringfragment) | 根据给定的字符串创建一个不透明的 Uri 对象。 |
boolean | hasFileDescriptor() | 检查此 Sequenceable 的实现类是否包含 FileDescriptor 对象数据。 |
int | hashCode() | 返回对象的哈希码值。 |
boolean | isAbsolute() | 检查当前 URI 是否为绝对 URI。 |
abstract boolean | isHierarchical() | 检查当前 URI 是否是分层的。 |
boolean | isOpaque() | 检查当前 URI 是否是不透明的。 |
boolean | isRelative() | 检查当前 URI 是否是相对的。 |
abstract Uri.Builder | makeBuilder() | 获取当前 URI 的 Builder 对象,以便您可以使用该对象添加或修改 URI 组件。 |
static Uri | parse(StringuriStr) | 根据给定的符合 RFC 2396 的字符串创建 Uri 对象。 |
static Uri | readFromParcel(Parcelin) | 从 Parcel 中读取 Uri 对象。 |
abstract String | toString() | 获取编码后的URI对象的完整字符串。 |
boolean | unmarshalling(Parcelin) | 从 Parcel 对象中解组 URI 对象。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
从接口 ohos.utils.Sequenceable 继承的方法 |
---|
marshalling |
public static final Uri EMPTY_URI
表示一个空的 Uri 对象。 该值是一个空字符串。
public static final Sequenceable.Producer<Uri> PRODUCER
指示 Uri 实例是在对 Parcel 对象进行解组后创建的。
public abstract boolean isHierarchical()
检查当前 URI 是否是分层的。 例如,http://www.mycompany.com。 分层 URI 可以是绝对的,但其特定于方案的部分字段必须以斜杠 (/) 开头。 也可以是相对的。
返回:
如果是分层 URI,则返回 true; 否则返回 false。
public boolean isOpaque()
检查当前 URI 是否是不透明的。 例如:www.mycompany.com。 不透明 URI 必须是绝对 URI,并且其特定于方案的部分字段不能以斜杠 (/) 开头。
返回:
如果是不透明的 URI,则返回 true; 否则返回 false。
public boolean isRelative()
检查当前 URI 是否是相对的。 例如:www.mycompany.com。 相对 URI 不包含方案字段。
返回:
如果是相对 URI,则返回 true; 否则返回 false。
public boolean isAbsolute()
检查当前 URI 是否为绝对 URI。 例如:http://www.mycompany.com。 绝对 URI 必须包含方案字段。
返回:
如果是绝对 URI,则返回 true; 否则返回 false。
public String getScheme()
获取当前 URI 的 scheme 字段。 例如,http 是 URI http://www.mycompany.com的方案字段。
返回:
返回方案字段; 如果当前 URI 不包含方案字段,则返回 null。
public abstract String getDecodedSchemeSpecificPart()
获取当前 URI 中已解码的 scheme-specific-part 字段。 它是方案分隔符 (:) 和片段分隔符 (#) 之间的所有内容。
例如,在 URI https://www.mycompany.com/cn/?ic_medium=direct中,//www.mycompany.com/cn/?ic_medium=direct 是 scheme-specific-part 字段。
返回:
返回解码的方案特定部分字段; 如果当前 URI 不包含方案特定部分字段,则返回 null。
public abstract String getEncodedSchemeSpecificPart()
获取当前 URI 中编码的 scheme-specific-part 字段。
返回:
返回编码的方案特定部分字段; 如果当前 URI 不包含方案特定部分字段,则返回 null。
public abstract String getDecodedAuthority()
获取当前URI的解码权限字段。 分层 URI 的格式为 [scheme:][//authority][path][?query][#fragment]。 例如,www.mycompany.com 是 URI https://www.mycompany.com/cn/?ic_medium=direct的权限字段。
返回:
返回解码的权限字段; 如果当前 URI 不包含权限字段,则返回 null。
public abstract String getEncodedAuthority()
获取当前 URI 的编码权限字段。
返回:
返回编码的权限字段; 如果当前 URI 不包含权限字段,则返回 null。
public abstract String getDecodedUserInfo()
获取当前 URI 的解码后的 user-info 字段。
服务器类型的权限结构,格式为[user-info@]host[:port]。
例如,test 是权限结构 test@mycompany.com 的 user-info 字段。
返回:
返回解码的用户信息字段; 如果当前 URI 不包含 user-info 字段,则返回 null。
public abstract String getEncodedUserInfo()
获取当前 URI 的编码后的 user-info 字段。
返回:
返回编码的用户信息字段; 如果当前 URI 不包含 user-info 字段,则返回 null。
public abstract String getDecodedHost()
获取当前URI的解码主机字段。
服务器类型的权限结构,格式为[user-info@]host[:port]。
例如,mycompany.com 是权限结构 test@mycompany.com 的主机字段。
返回:
返回解码后的主机字段; 如果当前 URI 不包含主机字段,则返回 null。
public abstract String getEncodedHost()
获取当前 URI 的编码主机字段。
返回:
返回编码的主机字段; 如果当前 URI 不包含主机字段,则返回 null。
public abstract int getPort()
获取当前URI的端口字段。
服务器类型的权限结构,格式为[user-info@]host[:port]。
例如,443 是权限结构 test@mycompany.com:443 的端口字段。
返回:
返回当前 URI 的端口字段; 如果当前 URI 不包含端口字段,则返回 -1。
public abstract String getDecodedPath()
获取当前 URI 中的解码路径字段。
返回:
返回解码后的路径字段; 如果当前 URI 不包含路径字段,则返回 null。
public abstract String getEncodedPath()
获取当前URI的编码路径字段。
返回:
返回编码的路径字段; 如果当前 URI 不包含路径字段,则返回 null。
public abstract List<String> getDecodedPathList()
获取当前 URI 中已解码路径的列表。
一个 URI 中可能有多个路径字段,例如://authority/path1/path2/path3?query#fragment。
返回:
返回解码路径列表; 如果没有可用的路径,则返回一个空列表。
public abstract String getDecodedQuery()
获取当前URI中解码后的查询字段。
它是查询分隔符 (?) 和片段分隔符 (#) 之间的所有内容。 例如 ic_medium=direct 是 URI https://www.mycompany.com/cn/?ic_medium=direct的查询字段。
返回:
返回解码后的查询字段; 如果当前 URI 不包含查询字段,则返回 null。
public abstract String getEncodedQuery()
获取当前URI的编码查询字段。
返回:
返回编码的查询字段; 如果当前 URI 不包含查询字段,则返回 null。
public abstract Map<String,List<String>> getDecodedQueryParams()
获取当前 URI 的查询字段中的所有搜索条件和值。
返回:
返回所有搜索条件的映射。 该映射由搜索条件名称(称为键)和搜索条件值(称为值)组成。 映射中的值与 URI 的查询语句的顺序相同。 如果指定的键没有关联的值,则返回包含 "" 的映射。
public abstract String getDecodedFragment()
获取当前URI的解码片段字段。
例如 28 是 URI https://www.mycompany.com/cn/?ic_medium=direct#28的片段字段。
返回:
返回解码的片段字段; 如果当前 URI 不包含片段字段,则返回 null。
public abstract String getEncodedFragment()
获取当前URI的编码片段字段。
返回:
返回编码的片段字段; 如果当前 URI 不包含片段字段,则返回 null。
public abstract Uri.Builder makeBuilder()
获取当前 URI 的 Builder 对象,以便您可以使用该对象添加或修改 URI 组件。
返回:
返回 Builder 对象。
public abstract String toString()
获取编码后的URI对象的完整字符串。 例如,https://www.mycompany.com/cn/?ic_medium=direct#28。
覆盖:
类 Object 中的 toString
返回:
返回当前 URI 对象的字符串。
public boolean unmarshalling(Parcel in)
从 Parcel 对象中解组 URI 对象。
目前不支持此方法。 使用 Uri#PRODUCER 进行交替。
指定者:
在接口 Sequenceable 中解组
参数:
参数名称 | 参数描述 |
---|---|
in | 指示 Parcel 对象。 |
返回:
如果解组成功,则返回 true; 否则返回 false。
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果调用此方法,则抛出此异常,因为当前不支持它。 |
public static String encode(String str)
使用 UTF-8 编码对指定的字符串进行编码。
除了字母(A-Z 和 a-z)、数字 0-9 和非保留字符(“_-!.~'()*”)之外的所有字符都可以编码。
参数:
参数名称 | 参数描述 |
---|---|
str | 指示要编码的字符串 |
返回:
返回编码后的字符串; 如果在输入参数中传递了 null,则返回 null。
public static String encode(String str, String allow)
使用 UTF-8 编码对 allow 参数指定的字符以外的字符进行编码。
字母(A-Z 和 a-z)、数字 0-9 和非保留字符(“_-!.~'()*”)不会被编码。
参数:
参数名称 | 参数描述 |
---|---|
str | 指示要编码的字符串 |
allow | 表示不会被编码的附加字符集。 您可以将其设置为空。 |
返回:
返回编码后的字符串; 如果在输入参数中传递了 null,则返回 null。
public static String decode(String str)
使用 UTF-8 编码解码指定的字符串。
参数:
参数名称 | 参数描述 |
---|---|
str | 指示要解码的字符串 |
返回:
返回解码后的字符串; 如果在输入参数中传递了 null,则返回 null。
public static Uri getUriFromParts(String scheme, String ssp, String fragment)
根据给定的字符串创建一个不透明的 Uri 对象。
参数:
参数名称 | 参数描述 |
---|---|
scheme | 指示不透明 URI 中的方案字段。 |
ssp | 指示不透明 URI 中的方案特定部分字段。 |
fragment | 表示不透明 URI 中的片段字段。 |
返回:
返回一个不透明的 Uri 对象。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果方案或方案特定部分为空,则引发此异常。 |
public static Uri getUriFromFile(File file)
基于给定文件创建分层 Uri 对象。
URI 的格式为 file://<absolute path>。
参数:
参数名称 | 参数描述 |
---|---|
file | 指示用于创建 URI 的文件。 |
返回:
返回一个分层的 Uri 对象。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果文件参数为空,则引发此异常。 |
public static Uri getUriFromFileCanonicalPath(File file) throws IOException
根据给定文件的规范路径创建分层 Uri 对象。 URI 的格式为 file://<canonical path>。
参数:
参数名称 | 参数描述 |
---|---|
file | 指示用于创建 URI 的文件。 |
返回:
返回一个分层的 Uri 对象。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误,则引发此异常。 |
NullPointerException | 如果文件参数为空,则引发此异常。 |
public static Uri appendEncodedPathToUri(Uri orgUri, String path)
将路径附加到指定的 Uri 对象。
参数:
参数名称 | 参数描述 |
---|---|
orgUri | 指示要将路径附加到的 Uri 对象。 |
path | 指示要附加的编码路径字符串。 |
返回:
返回附加了编码路径的 Uri 对象。
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果指定的 Uri 对象是不透明的 URI,则引发此异常。 |
public static Uri parse(String uriStr)
根据给定的符合 RFC 2396 的字符串创建 Uri 对象。
参数:
参数名称 | 参数描述 |
---|---|
uriStr | 表示编码后的 URI 字符串,必须符合 RFC 2396。 |
返回:
返回一个 Uri 对象。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 uriStr 为 null 或为空,则引发此异常。 |
IllegalArgumentException | 如果 uriStr 无效,则引发此异常。 |
public static Uri readFromParcel(Parcel in)
从 Parcel 中读取 Uri 对象。
参数:
参数名称 | 参数描述 |
---|---|
in | 指示 Parcel 对象。 |
返回:
返回 Uri 对象。
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果输入参数为 null 或解组失败,则引发此异常。 |
public String getLastPath()
获取当前 URI 的最后一个路径。
返回:
返回 URI 中解码后的最后一个路径; 如果最后一个路径不存在,则返回 null。
public List<String> getQueryParamsByKey(String key)
根据指定的key,获取当前URI中与查询字段匹配的所有结果。
键可以是重复的,并且可能没有关联的值。 因此,在查询字段中的语句序列中返回匹配结果列表。 如果指定的键存在但没有关联的值,将返回一个包含“”的列表。
参数:
参数名称 | 参数描述 |
---|---|
key | 表示解码后的密钥 |
返回:
返回 URI 的查询字段中按照语句序列排序的所有匹配的解码结果; 如果没有找到结果,则返回一个空列表。
public String getFirstQueryParamByKey(String key)
根据指定的key,获取当前URI中与查询字段匹配的第一个结果。
键可以是重复的,并且可能没有关联的值。 因此,在查询字段中的语句序列中返回第一个匹配的结果。 如果指定的键没有值,则返回""。
参数:
参数名称 | 参数描述 |
---|---|
key | 表示解码后的密钥 |
返回:
返回第一个匹配的解码结果; 如果没有找到结果,则返回 ""。
public Set<String> getQueryParamNames()
获取当前 URI 的查询字段中的所有名称。
返回:
返回当前 URI 的解码查询字段中的所有名称; 如果没有查询字段,则返回一个空列表。
public boolean getBooleanQueryParam(String key, boolean defaultValue)
根据指定的key获取当前URI中查询字段的第一个结果,判断结果是否为false或0。
参数:
参数名称 | 参数描述 |
---|---|
key | 表示解码后的密钥 |
defaultValue | 如果没有找到结果,则表示返回的默认值。 |
返回:
如果未找到匹配项,则返回 defaultValue; 如果匹配值为 false 或 0,则返回 false; 其他情况返回 true。
public Uri getLowerCaseScheme()
将当前 Uri 对象中的方案字段设置为小写。
返回:
返回带有小写方案字段的 Uri 对象。
public boolean equals(Object obj)
Description copied from class: Object
指示其他对象是否“等于”这个对象。 equals 方法在非空对象引用上实现等价关系:
Object 类的 equals 方法实现了对象上最有区别的可能等价关系; 也就是说,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象(x == y 的值为 true)时,此方法才返回 true。
请注意,每当重写该方法时,通常都需要重写 hashCode 方法,以维护 hashCode 方法的一般约定,即相等的对象必须具有相等的哈希码。
重写:
等于 Object 中的类
参数:
参数名称 | 参数描述 |
---|---|
obj | 要与之比较的参考对象。 |
返回:
如果此对象与 obj 参数相同,则为 true; 否则为false。
public int hashCode()
Description copied from class: Object
返回对象的哈希码值。 支持这种方法是为了有利于哈希表,例如 HashMap 提供的那些。
hashCode 的一般合约是:
在合理可行的情况下,由 Object 类定义的 hashCode 方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但 Java™ 编程语言不需要这种实现技术。)
重写:
Object 类中的 hashCode
返回:
此对象的哈希码值。
public int compareTo(Uri other)
Description copied from interface: Comparable
将此对象与指定对象进行比较以进行排序。返回负整数、零或正整数,因为此对象小于、等于或大于指定对象。 实现者必须确保所有 x 和 y 的 sgn(x.compareTo(y)) == -sgn(y.compareTo(x))。 (这意味着如果 y.compareTo(x) 抛出异常,则 x.compareTo(y) 必须抛出异常。)
实现者还必须确保关系是可传递的:(x.compareTo(y)>0 && y.compareTo(z)>0) 意味着 x.compareTo(z)>0。
最后,实现者必须确保 x.compareTo(y)==0 意味着 sgn(x.compareTo(z)) == sgn(y.compareTo(z)),对于所有 z。
强烈建议但不严格要求 (x.compareTo(y)==0) == (x.equals(y))。一般来说,任何实现了 Comparable 接口并违反此条件的类都应该清楚地表明这一事实。推荐的语言是“注意:这个类有一个与equals不一致的自然顺序。”
在前面的描述中,符号sgn(expression)表示数学符号函数,它被定义为根据表达式的值是负数、零还是正数返回-1、0或1之一。
指定者:
接口 Comparable<Uri> 中的 compareTo
参数:
参数名称 | 参数描述 |
---|---|
other | 要比较的对象 |
返回:
负整数、零或正整数,因为此对象小于、等于或大于指定对象。
public boolean hasFileDescriptor()
Description copied from interface: Sequenceable
检查此 Sequenceable 的实现类是否包含 FileDescriptor 对象数据。 如果自定义 Sequenceable 类包含任何 FileDescriptor 数据,则应覆盖此方法。 此方法默认返回 false。
指定者:
接口 Sequenceable 中的 hasFileDescriptor
返回:
如果它包含 FileDescriptor 数据,则返回 true; 否则返回 false。
备案信息: 粤ICP备15087711号-2
Copyright © 2008-2024 啊嘎哇在线工具箱 All Rights.
本站所有资料来源于网络,版权归原作者所有,仅作学习交流使用,如不慎侵犯了您的权利,请联系我们。