首页 文章

如何查看Android的系统版本?

提问于
浏览
419

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

12 回答

  • 58

    您可以找到查看Build.VERSION的Android版本 .

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

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

  • 73
    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都能正常工作!

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

    使用此方法:

    public static String getAndroidVersion() {
            String versionName = "";
    
            try {
                 versionName = String.valueOf(Build.VERSION.RELEASE);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return versionName;
        }
    
  • 43

    检查android.os.Build.VERSION .

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

  • 12

    示例如何使用它:

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

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

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

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

  • 7

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

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

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

  • 720

    请注意@ Falcon165o提到Build.VERSION.SDK_INT isn 't reliable, it',最近我也碰到了那个 .

    因此,为了获取当前安装的android的String数据(基于Android version list),我创建了这样的代码:

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

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

  • 35

    使用这个课程

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

    我无法对答案发表评论,但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
    }
    

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

相关问题