Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/os/Build#nestedclasses) \| [Constants](https://developer.android.com/reference/android/os/Build#constants) \| [Fields](https://developer.android.com/reference/android/os/Build#lfields) \| [Ctors](https://developer.android.com/reference/android/os/Build#pubctors) \| [Methods](https://developer.android.com/reference/android/os/Build#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/os/Build#inhmethods)

# Build

*** ** * ** ***

` public class Build `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.os.Build |

<br />

*** ** * ** ***

Information about the current build, extracted from system properties.

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/android/os/Build.Partition` Build information for a particular device partition. |
| ` class` | `https://developer.android.com/reference/android/os/Build.VERSION` Various version strings. |
| ` class` | `https://developer.android.com/reference/android/os/Build.VERSION_CODES` Enumeration of the currently known SDK version codes. |
| ` class` | `https://developer.android.com/reference/android/os/Build.VERSION_CODES_FULL` Enumeration of the currently known SDK major and minor version codes. |

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_FIXED` The known issue is fixed on this device. |
| `int` | `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_NOT_APPLICABLE` The known issue is not applicable to this device. |
| `int` | `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_NOT_FIXED` The known issue is not fixed on this device. |
| `int` | `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_UNKNOWN` The status of the known issue on this device is not known. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#UNKNOWN` Value used for when a build property is unknown. |

| ### Fields ||
|---|---|
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#BOARD` The name of the underlying board, like "goldfish". |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#BOOTLOADER` The system bootloader version number. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#BRAND` The consumer-visible brand with which the product/hardware will be associated, if any. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#CPU_ABI` *This field was deprecated in API level 21. Use `https://developer.android.com/reference/android/os/Build#SUPPORTED_ABIS` instead.* |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#CPU_ABI2` *This field was deprecated in API level 21. Use `https://developer.android.com/reference/android/os/Build#SUPPORTED_ABIS` instead.* |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#DEVICE` The name of the industrial design. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#DISPLAY` A build ID string meant for displaying to the user |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#FINGERPRINT` A string that uniquely identifies this build. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#HARDWARE` The name of the hardware (from the kernel command line or /proc). |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#HOST` <br /> |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#ID` Either a changelist number, or a label like "M4-rc20". |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#MANUFACTURER` The manufacturer of the product/hardware. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#MODEL` The end-user-visible name for the end product. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#ODM_SKU` The SKU of the device as set by the original design manufacturer (ODM). |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#PRODUCT` The name of the overall product. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#RADIO` *This field was deprecated in API level 15. The radio firmware version is frequently not available when this class is initialized, leading to a blank or "unknown" value for this string. Use `https://developer.android.com/reference/android/os/Build#getRadioVersion()` instead.* |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#SERIAL` *This field was deprecated in API level 26. Use `https://developer.android.com/reference/android/os/Build#getSerial()` instead.* |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#SKU` The SKU of the hardware (from the kernel command line). |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#SOC_MANUFACTURER` The manufacturer of the device's primary system-on-chip. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#SOC_MODEL` The model name of the device's primary system-on-chip. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#STRONGBOX_MANUFACTURER` The manufacturer of the device's StrongBox chip. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#STRONGBOX_MODEL` The model of the device's StrongBox chip. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#SUPPORTED_32_BIT_ABIS` An ordered list of **32 bit** ABIs supported by this device. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#SUPPORTED_64_BIT_ABIS` An ordered list of **64 bit** ABIs supported by this device. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#SUPPORTED_ABIS` An ordered list of ABIs supported by this device. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#TAGS` Comma-separated tags describing the build, like "unsigned,debug". |
| ` public static final long` | `https://developer.android.com/reference/android/os/Build#TIME` The time at which the build was produced, given in milliseconds since the UNIX epoch. |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#TYPE` The type of build, like "user" or "eng". |
| ` public static final https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/os/Build#USER` <br /> |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/os/Build#Build()() ` |

| ### Public methods ||
|---|---|
| ` static int` | ` https://developer.android.com/reference/android/os/Build#getBackportedFixStatus(long)(long id) ` The status of the backported fix for a known issue on this device. |
| ` static https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/os/Build.Partition>` | ` https://developer.android.com/reference/android/os/Build#getFingerprintedPartitions()() ` Get build information about partitions that have a separate fingerprint defined. |
| ` static int` | ` https://developer.android.com/reference/android/os/Build#getMajorSdkVersion(int)(int sdkIntFull) ` Obtain the major version encoded in a VERSION_CODES_FULL value. |
| ` static int` | ` https://developer.android.com/reference/android/os/Build#getMinorSdkVersion(int)(int sdkIntFull) ` Obtain the minor version encoded in a VERSION_CODES_FULL value. |
| ` static https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/os/Build#getRadioVersion()() ` Returns the version string for the radio firmware. |
| ` static https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/os/Build#getSerial()() ` Gets the hardware serial number, if available. |

### 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*.

## Constants

### BACKPORTED_FIX_STATUS_FIXED

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int BACKPORTED_FIX_STATUS_FIXED
```

The known issue is fixed on this device.

<br />

Constant Value: 1 (0x00000001)

### BACKPORTED_FIX_STATUS_NOT_APPLICABLE

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int BACKPORTED_FIX_STATUS_NOT_APPLICABLE
```

The known issue is not applicable to this device.

For example if the issue only affects a specific brand, devices from other brands would report not applicable.

<br />

Constant Value: 2 (0x00000002)

### BACKPORTED_FIX_STATUS_NOT_FIXED

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int BACKPORTED_FIX_STATUS_NOT_FIXED
```

The known issue is not fixed on this device.

<br />

Constant Value: 3 (0x00000003)

### BACKPORTED_FIX_STATUS_UNKNOWN

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int BACKPORTED_FIX_STATUS_UNKNOWN
```

The status of the known issue on this device is not known.

<br />

Constant Value: 0 (0x00000000)

### UNKNOWN

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String UNKNOWN
```

Value used for when a build property is unknown.

<br />

Constant Value: "unknown"

## Fields

### BOARD

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String BOARD
```

The name of the underlying board, like "goldfish".

<br />

### BOOTLOADER

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String BOOTLOADER
```

The system bootloader version number.

<br />

### BRAND

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String BRAND
```

The consumer-visible brand with which the product/hardware will be associated, if any.

<br />

### CPU_ABI

Added in [API level 4](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String CPU_ABI
```

<br />

**This field was deprecated in API level 21.**   

Use `https://developer.android.com/reference/android/os/Build#SUPPORTED_ABIS` instead.

The name of the instruction set (CPU type + ABI convention) of native code.

<br />

### CPU_ABI2

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String CPU_ABI2
```

<br />

**This field was deprecated in API level 21.**   

Use `https://developer.android.com/reference/android/os/Build#SUPPORTED_ABIS` instead.

The name of the second instruction set (CPU type + ABI convention) of native code.

<br />

### DEVICE

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String DEVICE
```

The name of the industrial design.

<br />

### DISPLAY

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String DISPLAY
```

A build ID string meant for displaying to the user

<br />

### FINGERPRINT

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String FINGERPRINT
```

A string that uniquely identifies this build. Do not attempt to parse this value.

<br />

### HARDWARE

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String HARDWARE
```

The name of the hardware (from the kernel command line or /proc).

<br />

### HOST

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String HOST
```

<br />

<br />

### ID

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String ID
```

Either a changelist number, or a label like "M4-rc20".

<br />

### MANUFACTURER

Added in [API level 4](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String MANUFACTURER
```

The manufacturer of the product/hardware.

<br />

### MODEL

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String MODEL
```

The end-user-visible name for the end product.

<br />

### ODM_SKU

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String ODM_SKU
```

The SKU of the device as set by the original design manufacturer (ODM).

This is a runtime-initialized property set during startup to configure device services. If no value is set, this is reported as `https://developer.android.com/reference/android/os/Build#UNKNOWN`.

The ODM SKU may have multiple variants for the same system SKU in case a manufacturer produces variants of the same design. For example, the same build may be released with variations in physical keyboard and/or display hardware, each with a different ODM SKU.

<br />

### PRODUCT

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String PRODUCT
```

The name of the overall product.

<br />

### RADIO

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 15](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String RADIO
```

<br />

**This field was deprecated in API level 15.**   

The radio firmware version is frequently not available when this class is initialized, leading to a blank or "unknown" value for this string. Use `https://developer.android.com/reference/android/os/Build#getRadioVersion()` instead.

The radio firmware version number.

<br />

### SERIAL

Added in [API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String SERIAL
```

<br />

**This field was deprecated in API level 26.**   

Use `https://developer.android.com/reference/android/os/Build#getSerial()` instead.

A hardware serial number, if available. Alphanumeric only, case-insensitive. This field is always set to `https://developer.android.com/reference/android/os/Build#UNKNOWN`.

<br />

### SKU

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String SKU
```

The SKU of the hardware (from the kernel command line).

The SKU is reported by the bootloader to configure system software features. If no value is supplied by the bootloader, this is reported as `https://developer.android.com/reference/android/os/Build#UNKNOWN`.

<br />

### SOC_MANUFACTURER

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String SOC_MANUFACTURER
```

The manufacturer of the device's primary system-on-chip.

<br />

### SOC_MODEL

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String SOC_MODEL
```

The model name of the device's primary system-on-chip.

<br />

### STRONGBOX_MANUFACTURER

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

```
public static final String STRONGBOX_MANUFACTURER
```

The manufacturer of the device's StrongBox chip. If the device does not use StrongBox, this should be set to "unsupported".

<br />

### STRONGBOX_MODEL

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

```
public static final String STRONGBOX_MODEL
```

The model of the device's StrongBox chip. If the device does not use StrongBox, this should be set to "unsupported".

<br />

### SUPPORTED_32_BIT_ABIS

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String[] SUPPORTED_32_BIT_ABIS
```

An ordered list of **32 bit** ABIs supported by this device. The most preferred ABI is the first element in the list. See `https://developer.android.com/reference/android/os/Build#SUPPORTED_ABIS` and `https://developer.android.com/reference/android/os/Build#SUPPORTED_64_BIT_ABIS`.

<br />

### SUPPORTED_64_BIT_ABIS

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String[] SUPPORTED_64_BIT_ABIS
```

An ordered list of **64 bit** ABIs supported by this device. The most preferred ABI is the first element in the list. See `https://developer.android.com/reference/android/os/Build#SUPPORTED_ABIS` and `https://developer.android.com/reference/android/os/Build#SUPPORTED_32_BIT_ABIS`.

<br />

### SUPPORTED_ABIS

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String[] SUPPORTED_ABIS
```

An ordered list of ABIs supported by this device. The most preferred ABI is the first element in the list. See `https://developer.android.com/reference/android/os/Build#SUPPORTED_32_BIT_ABIS` and `https://developer.android.com/reference/android/os/Build#SUPPORTED_64_BIT_ABIS`.

<br />

### TAGS

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String TAGS
```

Comma-separated tags describing the build, like "unsigned,debug".

<br />

### TIME

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final long TIME
```

The time at which the build was produced, given in milliseconds since the UNIX epoch.

<br />

### TYPE

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String TYPE
```

The type of build, like "user" or "eng".

<br />

### USER

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String USER
```

<br />

<br />

## Public constructors

### Build

```
public Build ()
```

<br />

<br />

## Public methods

### getBackportedFixStatus

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static int getBackportedFixStatus (long id)
```

The status of the backported fix for a known issue on this device.

<br />

| Parameters ||
|---|---|
| `id` | `long`: The id of the known issue to check. <br /> |

| Returns ||
|---|---|
| `int` | `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_FIXED` if the known issue is fixed on this device, `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_NOT_FIXED` if the known issue is not fixed on this device, `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_NOT_APPLICABLE` if the known issue is is not applicable on this device, otherwise `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_UNKNOWN`. Value is one of the following: - `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_UNKNOWN` - `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_FIXED` - `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_NOT_APPLICABLE` - `https://developer.android.com/reference/android/os/Build#BACKPORTED_FIX_STATUS_NOT_FIXED` |

### getFingerprintedPartitions

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static List<Build.Partition> getFingerprintedPartitions ()
```

Get build information about partitions that have a separate fingerprint defined. The list includes partitions that are suitable candidates for over-the-air updates. This is not an exhaustive list of partitions on the device.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/os/Build.Partition>` | This value cannot be `null`. <br /> |

### getMajorSdkVersion

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static int getMajorSdkVersion (int sdkIntFull)
```

Obtain the major version encoded in a VERSION_CODES_FULL value. This value is guaranteed to be non-negative.

<br />

| Parameters ||
|---|---|
| `sdkIntFull` | `int` <br /> |

| Returns ||
|---|---|
| `int` | The major version encoded in a VERSION_CODES_FULL value <br /> |

### getMinorSdkVersion

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static int getMinorSdkVersion (int sdkIntFull)
```

Obtain the minor version encoded in a VERSION_CODES_FULL value. This value is guaranteed to be non-negative.

<br />

| Parameters ||
|---|---|
| `sdkIntFull` | `int` <br /> |

| Returns ||
|---|---|
| `int` | The minor version encoded in a VERSION_CODES_FULL value <br /> |

### getRadioVersion

Added in [API level 14](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static String getRadioVersion ()
```

Returns the version string for the radio firmware. May return null (if, for instance, the radio is not currently on).

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | <br /> |

### getSerial

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static String getSerial ()
```

Gets the hardware serial number, if available.

**Note:** Root access may allow you to modify device identifiers, such as the hardware serial number. If you change these identifiers, you can not use [key attestation](https://developer.android.com/training/articles/security-key-attestation) to obtain proof of the device's original identifiers. KeyMint will reject an ID attestation request if the identifiers provided by the frameworks do not match the identifiers it was provisioned with.

Starting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are recommended to use resettable identifiers (see [Best practices for unique identifiers](https://developer.android.com/training/articles/user-data-ids)). This method can be invoked if one of the following requirements is met:

- If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged permission that can only be granted to apps preloaded on the device.
- If the calling app has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`) on any active subscription.
- If the calling app is the default SMS role holder (see `https://developer.android.com/reference/android/app/role/RoleManager#isRoleHeld(java.lang.String)`).
- If the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or their delegates (see `https://developer.android.com/reference/android/app/admin/DevicePolicyManager#getEnrollmentSpecificId()`).

If the calling app does not meet one of these requirements then this method will behave as follows:

- If the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then `https://developer.android.com/reference/android/os/Build#UNKNOWN` is returned.
- If the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE permission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.

.   
Requires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | The serial number if specified. <br /> |