Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 12](https://developer.android.com/sdkExtensions) Summary: [Ctors](https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#inhmethods)

# DiscoveryRequest.Builder

*** ** * ** ***


`
public
static
final

class
DiscoveryRequest.Builder
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.net.nsd.DiscoveryRequest.Builder |

<br />

*** ** * ** ***

The builder for creating new `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest` objects.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#Builder(java.lang.String)(https://developer.android.com/reference/java/lang/String serviceType) ` Creates a new default `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` object with given service type. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#build()() ` Creates a new `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest` object. |
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setAttributeFilters(java.util.Map<java.lang.String,android.os.PatternMatcher>)(https://developer.android.com/reference/java/util/Map<https://developer.android.com/reference/java/lang/String, https://developer.android.com/reference/android/os/PatternMatcher> attributeFilters) ` Set filters based on service attributes. |
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setDisplayNameAttribute(java.lang.String)(https://developer.android.com/reference/java/lang/String attributeKey) ` Set the service attribute to use to display the service in the service picker UI. |
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setFlags(long)(long flags) ` Set all the discovery flags. |
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setFlags(long,%20long)(long flags, long mask) ` Sets the discovery flags. |
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setNetwork(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` Sets the `https://developer.android.com/reference/android/net/Network` on which the discovery queries should be sent. |
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setServiceNameFilter(android.os.PatternMatcher)(https://developer.android.com/reference/android/os/PatternMatcher serviceNameFilter) ` Set the filter to apply to `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getServiceName()` on received services. |
| ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | ` https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setSubtype(java.lang.String)(https://developer.android.com/reference/java/lang/String subtype) ` Sets the optional subtype of the services to be discovered. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Public constructors

### Builder

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 12](https://developer.android.com/sdkExtensions)

```
public Builder (String serviceType)
```

Creates a new default `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` object with given service type.

<br />

| Parameters ||
|---|---|
| `serviceType` | `String`: This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `serviceType` is `null` or an empty string |

## Public methods

### build

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 12](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest build ()
```

Creates a new `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest` object.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest` | This value cannot be `null`. <br /> |

### setAttributeFilters

Added in [API level 37](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 22](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest.Builder setAttributeFilters (Map<String, PatternMatcher> attributeFilters)
```

Set filters based on service attributes.

Service attributes are as per `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getAttributes()`.

Keys of the provided map should match attribute keys. As per RFC6763 6.4. attribute
keys are expected to be printable US-ASCII values (0x20-0x7E), and the key matching is
not case-sensitive.

Values of the map are matchers that will be checked against attributes value bytes
read as uppercase hexadecimal if the pattern starts with 0x, or using UTF-8 encoding if
it does not. Value matching is case-sensitive.

If a map value is null, the corresponding attribute will be expected to be a boolean
attribute with no value as per RFC6763 6.4.

If a null or empty map is passed, no filtering will be done based on attributes (the
default).

<br />

| Parameters ||
|---|---|
| `attributeFilters` | `Map`: A map of attribute key -\> filter for that attribute value. This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | <br /> |

### setDisplayNameAttribute

Added in [API level 37](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 22](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest.Builder setDisplayNameAttribute (String attributeKey)
```

Set the service attribute to use to display the service in the service picker UI.

Attribute key matching is not case-sensitive, as per RFC6763 6.4.

Defaults to `null`, which means the service name will be used instead.

<br />

| Parameters ||
|---|---|
| `attributeKey` | `String`: The key of the attribute, or null to use the service name. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | <br /> |

### setFlags

Added in [API level 37](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 22](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest.Builder setFlags (long flags)
```

Set all the discovery flags.

<br />

| Parameters ||
|---|---|
| `flags` | `long`: A bitmask of flags that should be enabled, or `0` to disable all flags. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_NO_PICKER` - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_SHOW_PICKER` - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_USER_APPROVED_ONLY` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder#setFlags(long,%20long)`

### setFlags

Added in [API level 37](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 22](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest.Builder setFlags (long flags, 
                long mask)
```

Sets the discovery flags.

Multiple flags may be enabled or disabled by passing the logical OR of the flags.

For example, to set `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_NO_PICKER`:
`setFlags(FLAG_NO_PICKER, FLAG_NO_PICKER)`

To disable `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_NO_PICKER`: `setFlags(0, FLAG_NO_PICKER)`

<br />

| Parameters ||
|---|---|
| `flags` | `long`: a bitmask of values to set; may be a single flag, the logical OR of multiple flags, or 0 to clear. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_NO_PICKER` - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_SHOW_PICKER` - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_USER_APPROVED_ONLY` |
| `mask` | `long`: a bitmask indicating which flags to modify. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_NO_PICKER` - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_SHOW_PICKER` - `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest#FLAG_USER_APPROVED_ONLY` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | This value cannot be `null`. <br /> |

### setNetwork

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 12](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest.Builder setNetwork (Network network)
```

Sets the `https://developer.android.com/reference/android/net/Network` on which the discovery queries should be sent.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: the discovery network or `null` if the query should be sent on all supported networks <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | This value cannot be `null`. <br /> |

### setServiceNameFilter

Added in [API level 37](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 22](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest.Builder setServiceNameFilter (PatternMatcher serviceNameFilter)
```

Set the filter to apply to `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getServiceName()` on received services.

As per RFC6335 5.1., service names must be only US-ASCII letters, digits and hyphens,
and matching is not case-sensitive.

Defaults to `null`, which means services will not be filtered by name.

<br />

| Parameters ||
|---|---|
| `serviceNameFilter` | `PatternMatcher`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | <br /> |

### setSubtype

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 12](https://developer.android.com/sdkExtensions)

```
public DiscoveryRequest.Builder setSubtype (String subtype)
```

Sets the optional subtype of the services to be discovered.

If a non-empty `subtype` is specified, it must start with underscore ('_') and
have the trailing "._sub" removed. Otherwise, `https://developer.android.com/reference/android/net/nsd/NsdManager#discoverServices(android.net.nsd.DiscoveryRequest,%20java.util.concurrent.Executor,%20android.net.nsd.NsdManager.DiscoveryListener)` will
fail with `https://developer.android.com/`. For example, `subtype` should
be "_printer" for DNS name "_printer._sub._http._tcp". In this case, only services with
this `subtype` will be queried, rather than all services of the base service type.

Note that a non-empty service type must be specified with `https://developer.android.com/` if a
non-empty subtype is specified by this method.

<br />

| Parameters ||
|---|---|
| `subtype` | `String`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/nsd/DiscoveryRequest.Builder` | This value cannot be `null`. <br /> |