Merge "Add methods to deconstruct SDK_INT_FULL" into main
diff --git a/core/api/current.txt b/core/api/current.txt
index ebc534f6..75c9d71 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -32782,6 +32782,8 @@
public class Build {
ctor public Build();
method @NonNull public static java.util.List<android.os.Build.Partition> getFingerprintedPartitions();
+ method @FlaggedApi("android.sdk.major_minor_versioning_scheme") public static int getMajorSdkVersion(int);
+ method @FlaggedApi("android.sdk.major_minor_versioning_scheme") public static int getMinorSdkVersion(int);
method public static String getRadioVersion();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public static String getSerial();
field public static final String BOARD;
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 479aa98..d3ba73e 100644
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -18,6 +18,7 @@
import android.Manifest;
import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
@@ -43,6 +44,8 @@
import dalvik.system.VMRuntime;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -1273,6 +1276,12 @@
public static final int VANILLA_ICE_CREAM = 35;
}
+ /** @hide */
+ @IntDef(value = {
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface SdkIntFull {}
+
/**
* Enumeration of the currently known SDK major and minor version codes.
* The numbers increase for every release, and are guaranteed to be ordered
@@ -1293,6 +1302,28 @@
}
/**
+ * Obtain the major version encoded in a VERSION_CODES_FULL value.
+ * This value is guaranteed to be non-negative.
+ *
+ * @return The major version encoded in a VERSION_CODES_FULL value
+ */
+ @FlaggedApi(Flags.FLAG_MAJOR_MINOR_VERSIONING_SCHEME)
+ public static int getMajorSdkVersion(@SdkIntFull int sdkIntFull) {
+ return sdkIntFull / VERSION_CODES_FULL.SDK_INT_MULTIPLIER;
+ }
+
+ /**
+ * Obtain the minor version encoded in a VERSION_CODES_FULL value.
+ * This value is guaranteed to be non-negative.
+ *
+ * @return The minor version encoded in a VERSION_CODES_FULL value
+ */
+ @FlaggedApi(Flags.FLAG_MAJOR_MINOR_VERSIONING_SCHEME)
+ public static int getMinorSdkVersion(@SdkIntFull int sdkIntFull) {
+ return sdkIntFull % VERSION_CODES_FULL.SDK_INT_MULTIPLIER;
+ }
+
+ /**
* The vendor API for 2024 Q2
*
* <p>For Android 14-QPR3 and later, the vendor API level is completely decoupled from the SDK