# URLUtilCompat

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

*** ** * ** ***


```
public final class URLUtilCompat
```

<br />

*** ** * ** ***

Compatibility versions of methods in `https://developer.android.com/reference/android/webkit/URLUtil.html`.

| See also |
|---|---|
| `https://developer.android.com/reference/android/webkit/URLUtil.html` |   |

## Summary

| ### Public methods |
|---|---|
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/webkit/URLUtilCompat#getFilenameFromContentDisposition(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html contentDisposition)` Extract filename from a `Content-Disposition` header value. |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/webkit/URLUtilCompat#guessFileName(java.lang.String,java.lang.String,java.lang.String)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html url, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html contentDisposition, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html mimeType )` Guesses canonical filename that a download would have, using the URL and contentDisposition. |

## Public methods

### getFilenameFromContentDisposition

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

```
public static @Nullable String getFilenameFromContentDisposition(@NonNull String contentDisposition)
```

Extract filename from a `Content-Disposition` header value.

This method implements the parsing defined in [RFC 6266](https://datatracker.ietf.org/doc/html/rfc6266), supporting both the `filename` and `filename*` disposition parameters. If the passed header value has the `"inline"` disposition type, this method will return `null` to indicate that a download was not intended.

If both `filename*` and `filename` is present, the former will be returned, as per the RFC. Invalid encoded values will be ignored.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html contentDisposition` | Value of `Content-Disposition` header. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html` | The filename suggested by the header or `null` if no filename could be parsed from the header value. |

### guessFileName

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

```
public static @NonNull String guessFileName(
    @NonNull String url,
    @Nullable String contentDisposition,
    @Nullable String mimeType
)
```

Guesses canonical filename that a download would have, using the URL and contentDisposition.

This method differs from `https://developer.android.com/reference/android/webkit/URLUtil.html#guessFileName(java.lang.String, java.lang.String, java.lang.String)` in the following ways:

- This method uses an updated parsing of `contentDisposition`, making this available on older Android versions. See `https://developer.android.com/reference/androidx/webkit/URLUtilCompat#getFilenameFromContentDisposition(java.lang.String)`.
- If the `contentDisposition` parameter is valid and contains a filename, that filename will be returned. The `url` and `mimeType` parameters will not be used in this case.
- Otherwise the filename will be deduced from the path of the `url` and the `mimeType`. If a `mimeType` is provided and the canonical extension for that filetype does not match the filename derived from the `url`, then the canonical extension will be appended.
- If the `mimeType` is `null`, `"application/octet-stream"`, or not known by the system, no extension will be appended to the filename.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html url` | Url to the content. Must not be `null` |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html contentDisposition` | Content-Disposition HTTP header or `null` |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html mimeType` | Mime-type of the content or `null` |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | suggested filename |

| See also |
|---|---|
| `https://developer.android.com/reference/android/webkit/URLUtil.html#guessFileName(java.lang.String, java.lang.String, java.lang.String)` |   |
| `https://developer.android.com/reference/androidx/webkit/URLUtilCompat#getFilenameFromContentDisposition(java.lang.String)` |   |