# SecurityStateManagerCompat

Artifact: [androidx.security:security-state](https://developer.android.com/jetpack/androidx/releases/security) [View Source](https://cs.android.com/search?q=file:androidx/security/state/SecurityStateManagerCompat.kt+class:androidx.security.state.SecurityStateManagerCompat) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/security#1.0.0)

*** ** * ** ***


```
public class SecurityStateManagerCompat
```

<br />

*** ** * ** ***

This class is a wrapper around AOSP `https://developer.android.com/reference/android/os/SecurityStateManager.html` service API added in SDK 35. Support for features on older SDKs is provided on a best effort basis.

Manages the retrieval and storage of security patch levels and module information for an Android device. This class provides methods to fetch the current security state of the system, including patch levels for the system, vendor, and kernel as well as module updates available through Android's update system.

It utilizes Android's PackageManager and other system services to retrieve detailed security-related information, which is crucial for maintaining the security integrity of the device.

## Summary

| ### Constants |
|---|---|
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/security/state/SecurityStateManagerCompat#KEY_KERNEL_VERSION()` The kernel version key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/security/state/SecurityStateManagerCompat#KEY_SYSTEM_SPL()` The system SPL key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/security/state/SecurityStateManagerCompat#KEY_SYSTEM_SUPPLEMENTAL_PATCHES()` The system supplemental patches key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/security/state/SecurityStateManagerCompat#KEY_VENDOR_SPL()` The vendor SPL key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/security/state/SecurityStateManagerCompat#KEY_VENDOR_SUPPLEMENTAL_PATCHES()` The vendor supplemental patches key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/security/state/SecurityStateManagerCompat#SecurityStateManagerCompat(android.content.Context,kotlin.Array,kotlin.Array)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/NonNull String[] systemSupplementalPatchConfigFiles, @https://developer.android.com/reference/androidx/annotation/NonNull String[] vendorSupplementalPatchConfigFiles )` |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/security/state/SecurityStateManagerCompat#getGlobalSecurityState(kotlin.String)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html moduleMetadataProviderPackageName )` Retrieves the global security state of the device, compiling various security patch levels and module information into a Bundle. |

## Constants

### KEY_KERNEL_VERSION

```
public static final @NonNull String KEY_KERNEL_VERSION
```

The kernel version key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}.

The value is a {@code String} representing the kernel version in "X.X.XX" format.

### KEY_SYSTEM_SPL

```
public static final @NonNull String KEY_SYSTEM_SPL
```

The system SPL key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}.

The value is a {@code String} representing the security patch level in "YYYY-MM-DD" format.

### KEY_SYSTEM_SUPPLEMENTAL_PATCHES

```
public static final @NonNull String KEY_SYSTEM_SUPPLEMENTAL_PATCHES
```

The system supplemental patches key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}.

The value is a {@code String\[\]} containing CVE IDs.

### KEY_VENDOR_SPL

```
public static final @NonNull String KEY_VENDOR_SPL
```

The vendor SPL key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}.

The value is a {@code String} representing the security patch level in "YYYY-MM-DD" format.

### KEY_VENDOR_SUPPLEMENTAL_PATCHES

```
public static final @NonNull String KEY_VENDOR_SUPPLEMENTAL_PATCHES
```

The vendor supplemental patches key returned as part of the {@code Bundle} from {@code getGlobalSecurityState}.

The value is a {@code String\[\]} containing CVE IDs.

## Public constructors

### SecurityStateManagerCompat

Added in [1.1.0-rc01](https://developer.android.com/jetpack/androidx/releases/security#1.1.0-rc01)

```
public SecurityStateManagerCompat(
    @NonNull Context context,
    @NonNull String[] systemSupplementalPatchConfigFiles,
    @NonNull String[] vendorSupplementalPatchConfigFiles
)
```

## Public methods

### getGlobalSecurityState

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

```
public @NonNull Bundle getGlobalSecurityState(
    @NonNull String moduleMetadataProviderPackageName
)
```

Retrieves the global security state of the device, compiling various security patch levels and module information into a Bundle. This method can optionally use Google's module metadata providers to enhance the data returned.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html moduleMetadataProviderPackageName` | Specifies package name for system modules metadata. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html` | A Bundle containing keys and values representing the security state of the system, vendor, and kernel. |