Uri 和 Uri.Builder 是 Android 开发中用于创建和操作 URIs (统一资源标识符) 的类。URIs 通常用来标识资源,比如网页地址、文件路径等。在 Android 中,URIs 广泛用于 Content Providers、Intent、网络请求等场景。
Uri 类
Uri 是一个不可变的类,用于表示 URIs。它提供了多种静态方法和实例方法,方便对 URIs 进行解析和操作。
常见方法:
-
parse(String uriString): 将字符串解析为Uri对象。Uri uri = Uri.parse("https://www.example.com"); -
getScheme(): 获取 URI 的 scheme 部分,例如http,https,content等。String scheme = uri.getScheme(); -
getHost(): 获取 URI 的主机部分。String host = uri.getHost(); -
getPath(): 获取 URI 的路径部分。String path = uri.getPath(); -
getQueryParameter(String key): 获取 URI 中查询参数的值。String value = uri.getQueryParameter("key");
Uri.Builder 类
Uri.Builder 是用于构建 Uri 对象的可变辅助类。你可以使用它逐步构建一个 URI,并在完成时调用 build() 方法生成 Uri 对象。
使用 Uri.Builder 构建 URI 的步骤:
-
创建
Uri.Builder实例:Uri.Builder builder = new Uri.Builder(); -
设置 Scheme: 通常是
http,https,content, 等。builder.scheme("https"); -
设置 Host: 主机名,例如
www.example.com。builder.authority("www.example.com"); -
添加路径: 可以逐层添加路径。
builder.appendPath("folder").appendPath("file"); -
添加查询参数: 可以添加键值对形式的查询参数。
builder.appendQueryParameter("key", "value"); -
构建 URI: 使用
build()方法生成最终的Uri对象。Uri uri = builder.build();
示例代码:
假设我们要构建一个 URI https://www.example.com/search?q=android:
Uri uri = new Uri.Builder()
.scheme("https")
.authority("www.example.com")
.appendPath("search")
.appendQueryParameter("q", "android")
.build();
生成的 Uri 对象将表示 https://www.example.com/search?q=android。
总结
Uri类用于表示和解析 URI。Uri.Builder类用于动态构建 URI。
使用 Uri.Builder 可以让 URI 的构建过程更加清晰和可控,尤其是当 URI 结构复杂或者包含多个参数时。