如何查看Android的系统版本?

时间:2010-06-22 13:09:31

标签: android version system

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

13 个答案:

答案 0 :(得分:751)

如何使用它的示例:

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

答案 1 :(得分:395)

检查android.os.Build.VERSION

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

答案 2 :(得分:78)

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)"

答案 3 :(得分:59)

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无论如何都会起作用!

答案 4 :(得分:46)

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

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

    }

对于ckecking其他人只需更改VERSION_CODES,如 K为kitkat,
L为loolipop N为Nougat等等......

答案 5 :(得分:43)

您可以找到查看Build.VERSION

的Android版本

文档建议您针对Build.VERSION.SDK_INT中的值检查Build.VERSION_CODES

只要您意识到{4}仅在API级别4中引入,即Android 1.6(Donut),就可以了。因此,这不会对您产生影响,但如果您确实希望自己的应用在Android 1.5或更早版本上运行,则必须使用弃用的Build.VERSION.SDK

答案 6 :(得分:28)

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

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
}

这个例子是使用“幻数”是一个坏习惯的原因。

答案 7 :(得分:16)

例如,一个功能仅适用于api21以下我们修复api21中的错误

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

答案 8 :(得分:14)

请注意Build.VERSION.SDK_INT不可靠,@ Falcon165o提及它,最近我遇到了那个。

为了获取当前安装的android的String数据(基于Android version list),我做了一个这样的代码:

<强>爪哇

//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 OR above Oreo
    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";
    return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT;
}

<强>科特林

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 OR above Oreo
    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"
    return codeName + " v" + release + ", API Level: " + Build.VERSION.SDK_INT
}

它产生的输出示例:

  

Marshmallow v6.0,API等级:23

答案 9 :(得分:7)

if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you  like.
}

答案 10 :(得分:3)

使用此课程

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;
    }
}

答案 11 :(得分:1)

使用此方法:

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

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

答案 12 :(得分:1)

鉴于您在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
}