有人知道我如何通过编程检查系统版本(例如1.0、2.2等)吗?
当前回答
我不能评论这些答案,但在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 (Build.VERSION_CODES)的API级别。甜甜圈= 4)。
if(Build.VERSION.SDK_INT >= 4.0){
//this code will be executed on devices running on DONUT (NOT ICS) or later
}
这个例子说明了为什么使用“魔数”是一个坏习惯。
其他回答
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you like.
}
根据Android文档:
release - "用户可见的版本字符串。例如,“1.0” 或者"3.4b5"或者"香蕉"
为了得到一个普通的Android版本(2.3,5.1,12.0等),我使用这个函数:
private fun getVersion(): Float {
val release = Build.VERSION.RELEASE
val parsedVersion = "\\d+(\\.\\d+)?".toRegex()
.find(release)?.value
if (parsedVersion.isNullOrBlank()) return 0f
return try {
parsedVersion.toFloat()
} catch (e: Exception) {
0f
}
}
检查android.os.Build.VERSION。
CODENAME:当前的开发代码名,如果这是一个发布版本,则为字符串“REL”。 INCREMENTAL:底层源代码控制用来表示此构建的内部值。 RELEASE:用户可见的版本字符串。
Build.VERSION.RELEASE;
这将给你你的版本的实际数字;又名2.3.3或2.2。 使用Build.VERSION的问题。SDK_INT是如果你有一个根手机或自定义rom,你可以有一个非标准的操作系统(也就是我的android是运行2.3.5),在使用Build.VERSION时将返回null。SDK_INT因此build。version。release无论如何都会工作!
例如,一个特性只适用于api21上面,下面我们修复api21下面的bug
if(Build.VERSION.SDK_INT >= 21) {
//only api 21 above
}else{
//only api 21 down
}
推荐文章
- 在XML中“图像上缺少contentDescription属性”
- 在Android SQLite中处理日期的最佳方法
- 读取Android APK的包名
- Android-Facebook应用程序的键散列
- 登出时,清除活动历史堆栈,防止“返回”按钮打开已登录的活动
- 如何改变标题的活动在安卓?
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE