# UserAgentMetadata.Builder

Artifact: [androidx.webkit:webkit](https://developer.android.com/jetpack/androidx/releases/webkit) [View Source](https://cs.android.com/search?q=file:androidx/webkit/UserAgentMetadata.java+class:androidx.webkit.UserAgentMetadata.Builder) Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

*** ** * ** ***


```
public final class UserAgentMetadata.Builder
```

<br />

*** ** * ** ***

Builder used to create `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata` objects.

Examples:

```
 // Create a setting with default options.
 new UserAgentMetadata.Builder().build();

      
 // Create a setting with a brand version contains brand name: myBrand, major version: 100,
 // full version: 100.1.1.1.
 BrandVersion brandVersion = new BrandVersion.Builder().setBrand("myBrand")
                                                       .setMajorVersion("100")
                                                       .setFullVersion("100.1.1.1")
                                                       .build();
 new UserAgentMetadata.Builder().setBrandVersionList(Collections.singletonList(brandVersion))
                                .build();

      
 // Create a setting brand version, platform, platform version and bitness.
 new UserAgentMetadata.Builder().setBrandVersionList(Collections.singletonList(brandVersion))
                                .setPlatform("myPlatform")
                                .setPlatform("1.1.1.1")
                                .setBitness(BITNESS_64)
                                .build();

    
```

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#Builder()()` Create an empty UserAgentMetadata Builder. |
| `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#Builder(androidx.webkit.UserAgentMetadata)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata uaMetadata)` Create a UserAgentMetadata Builder from an existing UserAgentMetadata object. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#build()()` Builds the current settings into a UserAgentMetadata object. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setArchitecture(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html architecture)` Sets the user-agent metadata architecture. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setBitness(int)(int bitness)` Sets the user-agent metadata bitness, the default value is `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#BITNESS_DEFAULT()`, which indicates an empty string for `sec-ch-ua-bitness`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setBrandVersionList(java.util.List<androidx.webkit.UserAgentMetadata.BrandVersion>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.BrandVersion> brandVersions )` Sets user-agent metadata brands and their versions. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `@https://developer.android.com/reference/androidx/annotation/RequiresFeature(name = https://developer.android.com/reference/androidx/webkit/WebViewFeature.USER_AGENT_METADATA_FORM_FACTORS, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported") https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setFormFactors(java.util.List<java.lang.String>)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html> formFactors)` Sets the user-agent metadata form factors. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setFullVersion(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html fullVersion)` Sets the user-agent metadata full version. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setMobile(boolean)(boolean mobile)` Sets the user-agent metadata mobile, the default value is true. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setModel(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html model)` Sets the user-agent metadata model. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setPlatform(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html platform)` Sets the user-agent metadata platform. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setPlatformVersion(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html platformVersion)` Sets the user-agent metadata platform version. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder` | `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.Builder#setWow64(boolean)(boolean wow64)` Sets the user-agent metadata wow64, the default is false. |

## Public constructors

### Builder

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public Builder()
```

Create an empty UserAgentMetadata Builder.

### Builder

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public Builder(@NonNull UserAgentMetadata uaMetadata)
```

Create a UserAgentMetadata Builder from an existing UserAgentMetadata object.

## Public methods

### build

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata build()
```

Builds the current settings into a UserAgentMetadata object.

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/UserAgentMetadata` | The UserAgentMetadata object represented by this Builder |

### setArchitecture

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setArchitecture(@Nullable String architecture)
```

Sets the user-agent metadata architecture. If null is provided, the system default value will be used to generate the client hint.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html architecture` | The architecture is used to generate user-agent client hint `sec-ch-ua-arch`. |

### setBitness

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setBitness(int bitness)
```

Sets the user-agent metadata bitness, the default value is `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#BITNESS_DEFAULT()`, which indicates an empty string for `sec-ch-ua-bitness`.

| Parameters |
|---|---|
| `int bitness` | The bitness is used to generate user-agent client hint `sec-ch-ua-bitness`. |

### setBrandVersionList

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setBrandVersionList(
    @NonNull List<UserAgentMetadata.BrandVersion> brandVersions
)
```

Sets user-agent metadata brands and their versions. The brand name, major version and full version should not be blank. The default value is an empty list which means the system default user-agent metadata brands and versions will be used to generate the user-agent client hints.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.BrandVersion> brandVersions` | a list of `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata.BrandVersion` used to generated user-agent client hints `sec-cu-ua` and `sec-ch-ua-full-version-list`. |

### setFormFactors

Added in [1.16.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.16.0)

```
@RequiresFeature(name = WebViewFeature.USER_AGENT_METADATA_FORM_FACTORS, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
public @NonNull UserAgentMetadata.Builder setFormFactors(@NonNull List<String> formFactors)
```

Sets the user-agent metadata form factors. The default value is an empty list which means the system default user-agent metadata form factor will be used to generate the user-agent client hints. Form factor value should be one or more of `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#FORM_FACTOR_DESKTOP()`, `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#FORM_FACTOR_AUTOMOTIVE()`, `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#FORM_FACTOR_MOBILE()`, `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#FORM_FACTOR_TABLET()`, `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#FORM_FACTOR_XR()`, `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#FORM_FACTOR_EINK()`, `https://developer.android.com/reference/androidx/webkit/UserAgentMetadata#FORM_FACTOR_WATCH()`. See the [spec](https://wicg.github.io/ua-client-hints/#sec-ch-ua-form-factors) for more details.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html> formFactors` | The form factors is used to generate user-agent client hint `sec-ch-ua-form-factors`. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | if the list contains an invalid form factor string. |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | if the `https://developer.android.com/reference/androidx/webkit/WebViewFeature#USER_AGENT_METADATA_FORM_FACTORS()` feature is not supported. This should be checked before use with `https://developer.android.com/reference/androidx/webkit/WebViewFeature#isFeatureSupported(java.lang.String)`. |

### setFullVersion

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setFullVersion(@Nullable String fullVersion)
```

Sets the user-agent metadata full version. The full version should not be blank, even though the [spec](https://wicg.github.io/ua-client-hints) about brand full version could be empty. A blank full version could cause inconsistent brands when generating brand version related user-agent client hints. It also provides a bad experience for developers when processing the brand full version. If null is provided, the system default value will be used to generate the client hint.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html fullVersion` | The full version is used to generate user-agent client hint `sec-ch-ua-full-version`. |

### setMobile

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setMobile(boolean mobile)
```

Sets the user-agent metadata mobile, the default value is true.

| Parameters |
|---|---|
| `boolean mobile` | The mobile is used to generate user-agent client hint `sec-ch-ua-mobile`. |

### setModel

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setModel(@Nullable String model)
```

Sets the user-agent metadata model. If null is provided, the system default value will be used to generate the client hint.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html model` | The model is used to generate user-agent client hint `sec-ch-ua-model`. |

### setPlatform

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setPlatform(@Nullable String platform)
```

Sets the user-agent metadata platform. The platform should not be blank. If null is provided, the system default value will be used to generate the client hint.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html platform` | The platform is used to generate user-agent client hint `sec-ch-ua-platform`. |

### setPlatformVersion

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setPlatformVersion(@Nullable String platformVersion)
```

Sets the user-agent metadata platform version. If null is provided, the system default value will be used to generate the client hint.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html platformVersion` | The platform version is used to generate user-agent client hint `sec-ch-ua-platform-version`. |

### setWow64

Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.9.0)

```
public @NonNull UserAgentMetadata.Builder setWow64(boolean wow64)
```

Sets the user-agent metadata wow64, the default is false.

| Parameters |
|---|---|
| `boolean wow64` | The wow64 is used to generate user-agent client hint `sec-ch-ua-wow64`. |