Uri 和 UriBuilder 的讲解

336 阅读1分钟

UriUri.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 的步骤:

  1. 创建 Uri.Builder 实例:

    Uri.Builder builder = new Uri.Builder();
    
  2. 设置 Scheme: 通常是 http, https, content, 等。

    builder.scheme("https");
    
  3. 设置 Host: 主机名,例如 www.example.com

    builder.authority("www.example.com");
    
  4. 添加路径: 可以逐层添加路径。

    builder.appendPath("folder").appendPath("file");
    
  5. 添加查询参数: 可以添加键值对形式的查询参数。

    builder.appendQueryParameter("key", "value");
    
  6. 构建 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 结构复杂或者包含多个参数时。