답변:
확인하십시오 android.os.Build.VERSION
.
CODENAME
: 현재 개발 코드 이름 또는 릴리스 빌드 인 경우 문자열 "REL"INCREMENTAL
:이 빌드를 나타 내기 위해 기본 소스 컨트롤에서 사용하는 내부 값입니다.RELEASE
: 사용자가 볼 수있는 버전 문자열입니다.
사용 방법 예 :
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// only for gingerbread and newer versions
}
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)"와 같은 모양입니다.
Build.VERSION.RELEASE;
그러면 실제 버전 번호가 표시됩니다. 일명 2.3.3 또는 2.2. Build.VERSION.SDK_INT 사용의 문제는 루팅 된 전화 또는 사용자 정의 롬이 있고 표준 OS (일명 안드로이드가 2.3.5를 실행 중임)가 없을 수 있으며 Build.VERSION.SDK_INT를 사용할 때 null을 반환합니다. 따라서 Build.VERSION.RELEASE는 무엇이든 작동합니다!
에서 Android 버전을 확인할 수 있습니다 Build.VERSION
.
설명서 Build.VERSION.SDK_INT
에서의 값 을 확인 하는 것이 좋습니다 Build.VERSION_CODES
.
Build.VERSION.SDK_INT
API 1.6 4 (Android 1.6 (도넛))에서만 소개 되었다는 것을 알고있는 한 괜찮습니다 . 따라서 이것은 영향을 미치지 않지만 Android 1.5 이하 버전에서 앱을 실행하려면 더 이상 사용되지 않는 것을 사용해야합니다 Build.VERSION.SDK
.
답변에 대해서는 언급 할 수 없지만 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을 작성하면 4는 Donut의 API 레벨 ( Build.VERSION_CODES.DONUT
4와 같음) 이기 때문에 Donut에서 시작하는 모든 장치에서 코드가 실행됩니다 .
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 >= 15){
예를 들어, 기능은 api21에서만 작동하며 다음은 api21에서 버그를 수정합니다.
if(Build.VERSION.SDK_INT >= 21) {
//only api 21 above
}else{
//only api 21 down
}
Build.VERSION.SDK_INT 는 신뢰할 수 없다는 점에 유의 하십시오 .
따라서 현재 설치된 안드로이드 의 문자열 데이터 ( Android 버전 목록 기반)를 얻으려면 다음 과 같은 코드를 작성하십시오.
자바
//Current Android version data
public static String currentVersion(){
double release=Double.parseDouble(Build.VERSION.RELEASE.replaceAll("(\\d+[.]\\d+)(.*)","$1"));
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;
}
코 틀린
fun currentVersion(): String {
val release = java.lang.Double.parseDouble(java.lang.String(Build.VERSION.RELEASE).replaceAll("(\\d+[.]\\d+)(.*)", "$1"))
var 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
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you like.
}
이 수업을 사용하십시오
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;
}
}
당신이 bash
당신의 안드로이드 장치에 가지고, 당신은이 bash 기능을 사용할 수 있습니다
function androidCodeName {
androidRelease=$(getprop ro.build.version.release)
androidCodeName=$(getprop ro.build.version.codename)
# Time "androidRelease" x10 to test it as an integer
case $androidRelease in
[0-9].[0-9]|[0-9].[0-9].|[0-9].[0-9].[0-9]) androidRelease=$(echo $androidRelease | cut -d. -f1-2 | tr -d .);;
[0-9].) androidRelease=$(echo $androidRelease | sed 's/\./0/');;
[0-9]) androidRelease+="0";;
esac
[ -n "$androidRelease" ] && [ $androidCodeName = REL ] && {
# Do not use "androidCodeName" when it equals to "REL" but infer it from "androidRelease"
androidCodeName=""
case $androidRelease in
10) androidCodeName+=NoCodename;;
11) androidCodeName+="Petit Four";;
15) androidCodeName+=Cupcake;;
20|21) androidCodeName+=Eclair;;
22) androidCodeName+=FroYo;;
23) androidCodeName+=Gingerbread;;
30|31|32) androidCodeName+=Honeycomb;;
40) androidCodeName+="Ice Cream Sandwich";;
41|42|43) androidCodeName+="Jelly Bean";;
44) androidCodeName+=KitKat;;
50|51) androidCodeName+=Lollipop;;
60) androidCodeName+=Marshmallow;;
70|71) androidCodeName+=Nougat;;
80|81) androidCodeName+=Oreo;;
90) androidCodeName+=Pie;;
100) androidCodeName+=ToBeReleased;;
*) androidCodeName=unknown;;
esac
}
echo $androidCodeName
}