如何查看Android系统版本?

发布于 2024-10-08 18:53:14 字数 65 浏览 0 评论 0原文

有谁知道如何以编程方式检查系统版本(例如 1.02.2 等)?

Does anyone know how to check the system version (e.g. 1.0, 2.2, etc.) programmatically ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

屋顶上的小猫咪 2024-10-15 18:53:15

使用这个类

import android.os.Build;

/**
 * Created by MOMANI on 2016/04/14.
 */
public class AndroidVersionUtil {
    public static int getApiVersion() {
        return android.os.Build.VERSION.SDK_INT;
    }

    public static boolean isApiVersionGraterOrEqual(int thisVersion) {
        return android.os.Build.VERSION.SDK_INT >= thisVersion;
    }
}

use this class

import android.os.Build;

/**
 * Created by MOMANI on 2016/04/14.
 */
public class AndroidVersionUtil {
    public static int getApiVersion() {
        return android.os.Build.VERSION.SDK_INT;
    }

    public static boolean isApiVersionGraterOrEqual(int thisVersion) {
        return android.os.Build.VERSION.SDK_INT >= thisVersion;
    }
}
但可醉心 2024-10-15 18:53:15

如果您的 Android 设备上有 bash,您可以使用以下 bash 函数:

function androidCodeName {
    androidRelease=$(getprop ro.build.version.release)
    androidCodeName=$(getprop ro.build.version.codename)

    # Time "androidRelease" x10 to test it as an integer
    case $androidRelease in
        [0-9].[0-9]|[0-9].[0-9].|[0-9].[0-9].[0-9])  androidRelease=$(echo $androidRelease | cut -d. -f1-2 | tr -d .);;
        [0-9].) androidRelease=$(echo $androidRelease | sed 's/\./0/');;
        [0-9]) androidRelease+="0";;
    esac

    [ -n "$androidRelease" ] && [ $androidCodeName = REL ] && {
    # Do not use "androidCodeName" when it equals to "REL" but infer it from "androidRelease"
        androidCodeName=""
        case $androidRelease in
        10) androidCodeName+=NoCodename;;
        11) androidCodeName+="Petit Four";;
        15) androidCodeName+=Cupcake;;
        20|21) androidCodeName+=Eclair;;
        22) androidCodeName+=FroYo;;
        23) androidCodeName+=Gingerbread;;
        30|31|32) androidCodeName+=Honeycomb;;
        40) androidCodeName+="Ice Cream Sandwich";;
        41|42|43) androidCodeName+="Jelly Bean";;
        44) androidCodeName+=KitKat;;
        50|51) androidCodeName+=Lollipop;;
        60) androidCodeName+=Marshmallow;;
        70|71) androidCodeName+=Nougat;;
        80|81) androidCodeName+=Oreo;;
        90) androidCodeName+=Pie;;
        100) androidCodeName+=ToBeReleased;;
        *) androidCodeName=unknown;;
        esac
    }
    echo $androidCodeName
}

Given you have bash on your android device, you can use this bash function :

function androidCodeName {
    androidRelease=$(getprop ro.build.version.release)
    androidCodeName=$(getprop ro.build.version.codename)

    # Time "androidRelease" x10 to test it as an integer
    case $androidRelease in
        [0-9].[0-9]|[0-9].[0-9].|[0-9].[0-9].[0-9])  androidRelease=$(echo $androidRelease | cut -d. -f1-2 | tr -d .);;
        [0-9].) androidRelease=$(echo $androidRelease | sed 's/\./0/');;
        [0-9]) androidRelease+="0";;
    esac

    [ -n "$androidRelease" ] && [ $androidCodeName = REL ] && {
    # Do not use "androidCodeName" when it equals to "REL" but infer it from "androidRelease"
        androidCodeName=""
        case $androidRelease in
        10) androidCodeName+=NoCodename;;
        11) androidCodeName+="Petit Four";;
        15) androidCodeName+=Cupcake;;
        20|21) androidCodeName+=Eclair;;
        22) androidCodeName+=FroYo;;
        23) androidCodeName+=Gingerbread;;
        30|31|32) androidCodeName+=Honeycomb;;
        40) androidCodeName+="Ice Cream Sandwich";;
        41|42|43) androidCodeName+="Jelly Bean";;
        44) androidCodeName+=KitKat;;
        50|51) androidCodeName+=Lollipop;;
        60) androidCodeName+=Marshmallow;;
        70|71) androidCodeName+=Nougat;;
        80|81) androidCodeName+=Oreo;;
        90) androidCodeName+=Pie;;
        100) androidCodeName+=ToBeReleased;;
        *) androidCodeName=unknown;;
        esac
    }
    echo $androidCodeName
}
迷爱 2024-10-15 18:53:15

根据Android文档:

Build.VERSION.RELEASE – “用户可见的版本字符串。例如,“1.0”
或“3.4b5”或“香蕉”

为了获得普通的 Android 版本(2.3、5.1、12.0 等),我使用此函数:

private fun getVersion(): Float {
    val release = Build.VERSION.RELEASE
    val parsedVersion = "\\d+(\\.\\d+)?".toRegex()
        .find(release)?.value
    if (parsedVersion.isNullOrBlank()) return 0f
    return try {
        parsedVersion.toFloat()
    } catch (e: Exception) {
        0f
    }
}

According to Android documentation:

Build.VERSION.RELEASE – "The user-visible version string. E.g., "1.0"
or "3.4b5" or "bananas""

In order to get a plain Android version (2.3, 5.1, 12.0, etc) I use this function:

private fun getVersion(): Float {
    val release = Build.VERSION.RELEASE
    val parsedVersion = "\\d+(\\.\\d+)?".toRegex()
        .find(release)?.value
    if (parsedVersion.isNullOrBlank()) return 0f
    return try {
        parsedVersion.toFloat()
    } catch (e: Exception) {
        0f
    }
}
梦忆晨望 2024-10-15 18:53:14

如何使用它的示例:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
     // only for gingerbread and newer versions
}

Example how to use it:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
     // only for gingerbread and newer versions
}
酒几许 2024-10-15 18:53:14

检查 android.os.Build.VERSION

  • CODENAME:当前开发代号,如果这是发布版本,则为字符串“REL”。
  • INCRMENTAL:底层源代码管理用于表示此构建的内部值。
  • RELEASE:用户可见的版本字符串。

Check android.os.Build.VERSION.

  • CODENAME: The current development codename, or the string "REL" if this is a release build.
  • INCREMENTAL: The internal value used by the underlying source control to represent this build.
  • RELEASE: The user-visible version string.
小兔几 2024-10-15 18:53:14

Build.Version 是获取此数据的位置。这是有关如何格式化它的代码片段。

public String getAndroidVersion() {
    String release = Build.VERSION.RELEASE;
    int sdkVersion = Build.VERSION.SDK_INT;
    return "Android SDK: " + sdkVersion + " (" + release +")";
}

看起来像这样“Android SDK:19(4.4.4)”

Build.Version is the place go to for this data. Here is a code snippet for how to format it.

public String getAndroidVersion() {
    String release = Build.VERSION.RELEASE;
    int sdkVersion = Build.VERSION.SDK_INT;
    return "Android SDK: " + sdkVersion + " (" + release +")";
}

Looks like this "Android SDK: 19 (4.4.4)"

忆离笙 2024-10-15 18:53:14

要检查大于或等于 Marshmallow 的设备版本,请使用此代码。

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){

    }

为了检查其他人只需更改 VERSION_CODES,例如,
K 代表奇巧,
L 代表 loolipop
N 代表牛轧糖等等...

For checking device version which is greater than or equal to Marshmallow ,use this code.

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){

    }

for ckecking others just change the VERSION_CODES like,
K for kitkat,
L for loolipop
N for Nougat and so on...

ヅ她的身影、若隐若现 2024-10-15 18:53:14
Build.VERSION.RELEASE;

这将为您提供版本的实际编号;又名 2.3.3 或 2.2。
使用 Build.VERSION.SDK_INT 的问题是,如果您有 root 手机或自定义 rom,则可能有非标准操作系统(又名我的 Android 正在运行 2.3.5),并且在使用 Build.VERSION.SDK_INT 时将返回 null所以无论如何 Build.VERSION.RELEASE 都会起作用!

Build.VERSION.RELEASE;

That will give you the actual numbers of your version; aka 2.3.3 or 2.2.
The problem with using Build.VERSION.SDK_INT is if you have a rooted phone or custom rom, you could have a none standard OS (aka my android is running 2.3.5) and that will return a null when using Build.VERSION.SDK_INT so Build.VERSION.RELEASE will work no matter what!

策马西风 2024-10-15 18:53:14

您可以查看 Build 查看 Android 版本.版本

该文档建议您检查 Build.VERSION .SDK_INT 对照 Build.VERSION_CODES

只要您意识到 Build.VERSION.SDK_INT 仅在 API Level 4(即 Android 1.6 (Donut))中引入,就可以了。所以这不会影响你,但如果你确实希望你的应用程序在 Android 1.5 或更早版本上运行,那么你必须使用已弃用的 Build.VERSION.SDK 代替。

You can find out the Android version looking at Build.VERSION.

The documentation recommends you check Build.VERSION.SDK_INT against the values in Build.VERSION_CODES.

This is fine as long as you realise that Build.VERSION.SDK_INT was only introduced in API Level 4, which is to say Android 1.6 (Donut). So this won't affect you, but if you did want your app to run on Android 1.5 or earlier then you would have to use the deprecated Build.VERSION.SDK instead.

百变从容 2024-10-15 18:53:14

我无法对答案发表评论,但 Kaushik 的答案有一个巨大的错误:
SDK_INT与系统版本不同,实际上指的是API Level。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
    //this code will be executed on devices running ICS or later
}

Build.VERSION_CODES.ICE_CREAM_SANDWICH 等于 14。
14是Ice Cream Sandwich的API级别,系统版本为4.0。因此,如果您编写 4.0,您的代码将在从 Donut 开始的所有设备上执行,因为 4 是 Donut 的 API 级别(Build.VERSION_CODES.DONUT 等于 4)。

if(Build.VERSION.SDK_INT >= 4.0){
    //this code will be executed on devices running on DONUT (NOT ICS) or later
}

这个例子说明了为什么使用“幻数”是一个坏习惯。

I can't comment on the answers, but there is a huge mistake in Kaushik's answer:
SDK_INT is not the same as system version but actually refers to API Level.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
    //this code will be executed on devices running ICS or later
}

The value Build.VERSION_CODES.ICE_CREAM_SANDWICH equals 14.
14 is the API level of Ice Cream Sandwich, while the system version is 4.0. So if you write 4.0, your code will be executed on all devices starting from Donut, because 4 is the API level of Donut (Build.VERSION_CODES.DONUT equals 4).

if(Build.VERSION.SDK_INT >= 4.0){
    //this code will be executed on devices running on DONUT (NOT ICS) or later
}

This example is a reason why using 'magic number' is a bad habit.

挽清梦 2024-10-15 18:53:14

请注意,Build.VERSION.SDK_INT 不是可靠,@Falcon165o 提到过,最近我也遇到了这个。

因此,为了获取当前安装的android的字符串数据(基于Android版本列表),我做了一个像这样的代码:

Java

//Current Android version data
public static String currentVersion(){
    double release=Double.parseDouble(Build.VERSION.RELEASE.replaceAll("(\\d+[.]\\d+)(.*)","$1"));
    String codeName="Unsupported";//below Jelly Bean
    if(release >= 4.1 && release < 4.4) codeName = "Jelly Bean";
    else if(release < 5)   codeName="Kit Kat";
    else if(release < 6)   codeName="Lollipop";
    else if(release < 7)   codeName="Marshmallow";
    else if(release < 8)   codeName="Nougat";
    else if(release < 9)   codeName="Oreo";
    else if(release < 10)  codeName="Pie";
    else if(release >= 10) codeName="Android "+((int)release);//since API 29 no more candy code names
    return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT;
}

Kotlin

fun currentVersion(): String {
    val release = java.lang.Double.parseDouble(java.lang.String(Build.VERSION.RELEASE).replaceAll("(\\d+[.]\\d+)(.*)", "$1"))
    var codeName = "Unsupported"//below Jelly Bean
    if (release >= 4.1 && release < 4.4)  codeName = "Jelly Bean"
    else if (release < 5)   codeName = "Kit Kat"
    else if (release < 6)   codeName = "Lollipop"
    else if (release < 7)   codeName = "Marshmallow"
    else if (release < 8)   codeName = "Nougat"
    else if (release < 9)   codeName = "Oreo"
    else if (release < 10)  codeName = "Pie"
    else if (release >= 10) codeName = "Android "+(release.toInt())//since API 29 no more candy code names
    return codeName + " v" + release + ", API Level: " + Build.VERSION.SDK_INT
}

它产生的输出示例:

棉花糖 v6.0,API 级别:23

Be aware that Build.VERSION.SDK_INT isn't reliable, it's mentioned by @Falcon165o and recently I ran into that one too.

So to get the String data (based on Android version list) of currently installed android, I made a code like this:

Java

//Current Android version data
public static String currentVersion(){
    double release=Double.parseDouble(Build.VERSION.RELEASE.replaceAll("(\\d+[.]\\d+)(.*)","$1"));
    String codeName="Unsupported";//below Jelly Bean
    if(release >= 4.1 && release < 4.4) codeName = "Jelly Bean";
    else if(release < 5)   codeName="Kit Kat";
    else if(release < 6)   codeName="Lollipop";
    else if(release < 7)   codeName="Marshmallow";
    else if(release < 8)   codeName="Nougat";
    else if(release < 9)   codeName="Oreo";
    else if(release < 10)  codeName="Pie";
    else if(release >= 10) codeName="Android "+((int)release);//since API 29 no more candy code names
    return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT;
}

Kotlin

fun currentVersion(): String {
    val release = java.lang.Double.parseDouble(java.lang.String(Build.VERSION.RELEASE).replaceAll("(\\d+[.]\\d+)(.*)", "$1"))
    var codeName = "Unsupported"//below Jelly Bean
    if (release >= 4.1 && release < 4.4)  codeName = "Jelly Bean"
    else if (release < 5)   codeName = "Kit Kat"
    else if (release < 6)   codeName = "Lollipop"
    else if (release < 7)   codeName = "Marshmallow"
    else if (release < 8)   codeName = "Nougat"
    else if (release < 9)   codeName = "Oreo"
    else if (release < 10)  codeName = "Pie"
    else if (release >= 10) codeName = "Android "+(release.toInt())//since API 29 no more candy code names
    return codeName + " v" + release + ", API Level: " + Build.VERSION.SDK_INT
}

Example of an output it produce:

Marshmallow v6.0, API Level: 23

白况 2024-10-15 18:53:14

例如,某个功能仅适用于 api21 up,下面我们修复 api21 down 中的错误

    if(Build.VERSION.SDK_INT >= 21) {
    //only api 21 above
    }else{
   //only api 21 down
    }

For example, a feature only works for api21 up the following we fix bugs in api21 down

    if(Build.VERSION.SDK_INT >= 21) {
    //only api 21 above
    }else{
   //only api 21 down
    }
萌面超妹 2024-10-15 18:53:14
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you  like.
}
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you  like.
}
萝莉病 2024-10-15 18:53:14

使用此方法:

 public static String getAndroidVersion() {
        String versionName = "";

        try {
             versionName = String.valueOf(Build.VERSION.RELEASE);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return versionName;
    }

Use This method:

 public static String getAndroidVersion() {
        String versionName = "";

        try {
             versionName = String.valueOf(Build.VERSION.RELEASE);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return versionName;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文