Ich habe festgestellt, dass das Verhalten von Build.VERSION.RELEASE und Build.VERSION.CODENAME ziemlich unterschiedlich ist, je nachdem, ob es sich um eine vollständige Produktionsversion von Android OS oder eine Entwicklervorschau handelt. Wir gingen mit dem folgenden Mechanismus. Sie können sich nicht auf einen einzigen Wert verlassen, wenn Sie mehr als ein Szenario berücksichtigen möchten.
Dies ist, was ich fand, war der Fall für ein Galaxy S7 läuft eine Produktion Release von Nougat und ein Nexus 5X läuft O DP1.
Galaxy S7 Nougat Build.VERSION.BASE_OS: Build.VERSION.CODENAME: REL Build.VERSION.INCREMENTAL: G930FXXU1DQB3 Build.VERSION.PREVIEW_SDK_INT: 0 Build.VERSION.RELEASE: 7.0 Bauen .VERSION.SDK_INT: 24 Build.VERSION.SECURITY_PATCH: 2017-01-01
Nexus 5X O Build.VERSION.BASE_OS: Build.VERSION.CODENAME: O Build.VERSION.INCREM Ental: 3793265 Build.VERSION.PREVIEW_SDK_INT: 1 Build.VERSION.RELEASE: O Build.VERSION.SDK_INT: 25 Build.VERSION.SECURITY_PATCH: 2017-03-05
// release builds of Android (i.e. not developer previews) have a CODENAME value of "REL"
// check this. if it's REL then you can rely on value of SDK_INT (SDK_INT is inaccurate for DPs
// since it has the same value as the previous version of Android)
// if it's not REL, check its value. it will have a letter denoting the Android version (N for Nougat, O for... er... O and so on)
boolean laterThanNougat = false;
if(Build.VERSION.CODENAME.equals("REL")) {
Log.i(TAG, "This is a release build");
// since this is a release build, we can rely on value of SDK_INT
if (android.os.Build.VERSION.SDK_INT > 25) {
Log.i(TAG, "This is later than Nougat");
laterThanNougat = true;
} else {
Log.i(TAG, "This is Nougat or before");
}
} else {
Log.i(TAG, "This is NOT a release build");
// since this is not a release build, we can't rely on value of SDK_INT. must check codename again
if(Build.VERSION.CODENAME.compareTo("N") > 0) {
Log.i(TAG, "This is later than Nougat");
laterThanNougat = true;
} else {
Log.i(TAG, "This is Nougat or before");
}
}
Sie benötigen die Release-Version nicht die SDK-Version. 'Build.VERSION.RELEASE'.Es wird eine String-Darstellung der Version zurückgegeben, die auf dem Gerät ausgeführt wird. Ich bin mir zu 99% sicher. Habe das schon lange nicht mehr gemacht. – zgc7009
Danke, 'Build.VERSION.RELEASE' gibt" N "zurück – Exaqt