如何查看Android的系统版本?

dav*_*avs 468 android system version

有谁知道我可以检查系统版本(例如1.0,2.2等)编程?

ATo*_*Tom 781

示例如何使用它:

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

  • 我完全忽略了比Eclair(7),Android 2.1更旧的版本,很快我们也停止了对2.1的支持.但您可以使用SDK而不是SDK_INT. (24认同)
  • SDK已在API级别4中取消.请改用SDK_INT. (12认同)

Rob*_*ond 407

检查android.os.Build.VERSION.

  • CODENAME:当前开发代号,或者字符串"REL"(如果这是发布版本).
  • INCREMENTAL:底层源代码控件用于表示此构建的内部值.
  • RELEASE:用户可见的版本字符串.

  • 关于如何使用它的任何例子? (68认同)
  • 别担心,即使是穴居人今天也在使用Android API 1-3.@Zordid (7认同)

jpo*_*s18 83

Build.Version是获取此数据的地方.这是一个如何格式化它的代码片段.

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

看起来像这样的"Android SDK:19(4.4.4)"


Fal*_*65o 60

Build.VERSION.RELEASE;
Run Code Online (Sandbox Code Playgroud)

这将为您提供您的版本的实际数字; 又名2.3.3或2.2.使用Build.VERSION.SDK_INT的问题是如果你有一个root的手机或自定义ROM,你可能有一个非标准的操作系统(也就是我的android运行2.3.5),当使用Build.VERSION.SDK_INT时将返回null所以无论如何,Build.VERSION.RELEASE都能正常工作!

  • 一个int怎么可能返回null呢?SDK_INT是一个原始int. (57认同)

小智 51

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

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

    }
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*ebb 45

您可以找到Android版本Build.VERSION.

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

只要你意识到这Build.VERSION.SDK_INT只是在API Level 4中引入,也就是说Android 1.6(Donut),这很好.因此,这不会影响您,但如果您确实希望您的应用在Android 1.5或更早版本上运行,那么您将不得不使用已弃用的应用Build.VERSION.SDK.


Mic*_*iel 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
}
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

这个例子是使用"魔数"是一个坏习惯的原因.

  • 实际上,Build.VERSION.SDK_INT是API级别,而不是版本代码.所以正确的行是`if(Build.VERSION.SDK_INT> = 15){` (7认同)

小智 16

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

    if(Build.VERSION.SDK_INT >= 21) {
    //only api 21 above
    }else{
   //only api 21 down
    }
Run Code Online (Sandbox Code Playgroud)


Nik*_*tin 16

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

因此,为了获得当前安装的android 的String数据(基于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 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;
}
Run Code Online (Sandbox Code Playgroud)

科特林

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
}
Run Code Online (Sandbox Code Playgroud)

它产生的输出示例:

Marshmallow v6.0,API等级:23


小智 7

if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you  like.
}
Run Code Online (Sandbox Code Playgroud)


Bas*_*ANI 5

使用这个类

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;
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

Use This method:

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

        try {
             versionName = String.valueOf(Build.VERSION.RELEASE);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return versionName;
    }
Run Code Online (Sandbox Code Playgroud)