我如何检查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; }