有人知道我如何通过编程检查系统版本(例如1.0、2.2等)吗?


当前回答

使用实例:

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

其他回答

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

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

    }

如果要检查其他的,只需要更改VERSION_CODES, K代表kitkat, L代表棒棒糖 N代表牛轧糖等等……

构建。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)

根据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
    }
}

你可以在Build.VERSION中找到Android版本。

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

这很好,只要你意识到Build.VERSION。SDK_INT只在API Level 4中引入,也就是Android 1.6 (Donut)。所以这不会影响你,但如果你想让你的应用在Android 1.5或更早的版本上运行,那么你必须使用已弃用的Build.VERSION.SDK。

使用实例:

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