我如何检查Android的系统版本?

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

检查android.os.Build.VERSION

  • CODENAME :当前的开发代码名,或者如果这是一个发布版本,则是string“REL”。
  • INCREMENTAL :基础源代码控件用于表示此构build的内部值。
  • RELEASE :用户可见的版本string。

示例如何使用它:

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

这会给你你的版本的实际数字; 又名2.3.3或2.2。 使用Build.VERSION.SDK_INT的问题是,如果你有一个固定的电话或自定义的ROM,你可以有一个没有标准的操作系统(又名我的android运行2.3.5),并将返回null时使用Build.VERSION.SDK_INT所以Build.VERSION.RELEASE无论如何都可以工作!

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

你可以findAndroid版本看Build.VERSION

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

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

我不能评论答案,但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,您的代码将在所有设备上从甜甜圈开始执行,因为4是甜甜圈( Build.VERSION_CODES.DONUT等于4)的API级别。

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

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

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

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

对于其他人来说,只需更改VERSION_CODES,
K为kitkat,
L为loolipop N为牛轧糖等等…

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

例如,一个function只适用于api21,下面我们修复api21中的错误

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

请注意, Build.VERSION.SDK_INT是不可靠的,这是由@ Falcon165o提到,最近我碰到了一个。

所以要获取当前安装的android的String数据(基于Android版本列表 ),我做了这样的代码:

 //Current Android version data public static String currentVersion(){ double release=Double.parseDouble(Build.VERSION.RELEASE); 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; } 

它产生的输出示例:

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

使用这个类

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

使用此方法:

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