Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)  
Also in [C Extensions 24](https://developer.android.com/sdkExtensions) Summary: [Nested Classes](https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#nestedclasses) \| [Methods](https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#inhmethods)

# NetworkSecurityConfig

*** ** * ** ***


`
public

final

class
NetworkSecurityConfig
`


`

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


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.security.net.config.NetworkSecurityConfig |

<br />

*** ** * ** ***

The security configuration to use when performing network communications.

A `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` can specify security requirements for all network
communications, or for communications with a specific domain or localhost connections.
**See also:**

- [base-config](https://developer.android.com/privacy-and-security/security-config#base-config)
- [localhost](https://developer.android.com/privacy-and-security/security-config#Localhost)
- [domain-config](https://developer.android.com/privacy-and-security/security-config#domain-config)

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig.Builder` Builder for creating `NetworkSecurityConfig` objects. |

| ### Public methods ||
|---|---|
| ` static https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` | ` https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#createBaseConfig(android.content.Context)(https://developer.android.com/reference/android/content/Context context) ` Returns a base `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` using the provided app's defaults. |
| ` static https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` | ` https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#createLocalhostConfig()() ` Returns a `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` for localhost. |
| ` int` | ` https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#getDomainEncryptionMode()() ` |
| ` boolean` | ` https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#isCertificateTransparencyVerificationRequired()() ` |
| ` boolean` | ` https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig#isCleartextTrafficPermitted()() ` |

### 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 methods

### createBaseConfig

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)  
Also in [C Extensions 24](https://developer.android.com/sdkExtensions)

```
public static NetworkSecurityConfig createBaseConfig (Context context)
```

Returns a base `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` using the provided app's defaults.

An app default configuration has the following properties:

1. If the application targets API level 27 (Android O MR1) or lower, cleartext traffic is allowed by default.
2. Cleartext traffic is not permitted for ephemeral apps.
3. No certificate pinning is used.
4. The system certificate store is trusted for connections.
5. If the application targets API level 23 (Android M) or lower than the user certificate store is trusted by default as well for non-privileged applications.
6. Privileged applications do not trust the user certificate store on Android P and higher.

<br />

<br />

| Parameters ||
|---|---|
| `context` | `Context`: of the application. Must not be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` | the application `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig`, or `null` if the config cannot be found. <br /> |

### createLocalhostConfig

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)  
Also in [C Extensions 24](https://developer.android.com/sdkExtensions)

```
public static NetworkSecurityConfig createLocalhostConfig ()
```

Returns a `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` for localhost.

The localhost configuration has the following properties:

1. Cleartext traffic is permitted.
2. Certificate Transparency is disabled.

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig` | the `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig`. This value cannot be `null`. <br /> |

### getDomainEncryptionMode

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)  
Also in [C Extensions 24](https://developer.android.com/sdkExtensions)

```
public int getDomainEncryptionMode ()
```

<br />

<br />

| Returns ||
|---|---|
| `int` | the domain encryption mode. For possible values see `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#getDomainEncryptionMode(java.lang.String)`. Value is one of the following: - `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#DOMAIN_ENCRYPTION_MODE_UNKNOWN` - `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#DOMAIN_ENCRYPTION_MODE_DISABLED` - `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#DOMAIN_ENCRYPTION_MODE_OPPORTUNISTIC` - `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#DOMAIN_ENCRYPTION_MODE_ENABLED` - `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#DOMAIN_ENCRYPTION_MODE_REQUIRED` |

### isCertificateTransparencyVerificationRequired

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)  
Also in [C Extensions 24](https://developer.android.com/sdkExtensions)

```
public boolean isCertificateTransparencyVerificationRequired ()
```

<br />

<br />

| Returns ||
|---|---|
| `boolean` | true if Certificate Transparency is required for this `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig`. <br /> |

### isCleartextTrafficPermitted

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)  
Also in [C Extensions 24](https://developer.android.com/sdkExtensions)

```
public boolean isCleartextTrafficPermitted ()
```

<br />

<br />

| Returns ||
|---|---|
| `boolean` | true if cleartext traffic is permitted for this `https://developer.android.com/reference/android/security/net/config/NetworkSecurityConfig`. <br /> |