안드로이드의 시스템 버전을 확인하려면 어떻게 해야 합니까?
시스템 버전을 확인하는 방법(예:1.0
,2.2
프로그램적으로?
사용 방법의 예:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// only for gingerbread and newer versions
}
확인합니다.
CODENAME
현재 개발 코드 이름 또는 "REL" 문자열(릴리스 빌드인 경우).INCREMENTAL
이 빌드를 나타내기 위해 기본 소스 컨트롤에서 사용하는 내부 값입니다.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)"처럼 보입니다.
Mashmallow보다 크거나 같은 장치 버전을 확인하려면 이 코드를 사용합니다.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
}
다른 사용자를 확인하려면 VERSION_CODE를 다음과 같이 변경합니다.
K는 킷캣,
누가트를 위한 루리팝N의 L 등등...
Build.VERSION.RELEASE;
그러면 버전의 실제 숫자(2.3.3 또는 2.2)가 표시됩니다.빌드 사용과 관련된 문제입니다.VERSION.SDK_INT는 만약 당신이 루트 폰이나 커스텀 롬을 가지고 있다면, 당신은 비표준 OS(내 안드로이드가 2.3.5를 실행하고 있다고도 함)를 가질 수 있으며 빌드를 사용할 때 null을 반환합니다.VERSION.SDK_INT를 빌드합니다.VERSION.REASE는 무슨 일이 있어도 작동합니다!
에서 안드로이드 버전을 확인하실 수 있습니다.
설명서에서는 의 값을 확인할 것을 권장합니다.
당신이 그것을 깨닫는 한 이것은 괜찮습니다.Build.VERSION.SDK_INT
Android 1.6(Donut)이라는 API Level 4에만 도입되었습니다.따라서 이는 영향을 미치지 않지만 Android 1.5 또는 그 이전 버전에서 앱을 실행하려면 사용하지 않는 것을 대신 사용해야 합니다.
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가 도넛의 API 수준이기 때문에 도넛부터 모든 기기에서 코드가 실행됩니다.Build.VERSION_CODES.DONUT
4)와 같습니다.
if(Build.VERSION.SDK_INT >= 4.0){
//this code will be executed on devices running on DONUT (NOT ICS) or later
}
이 예는 '매직 넘버'를 사용하는 것이 나쁜 습관이 되는 이유입니다.
빌드에 주의하십시오.VERSION.SDK_INT는 신뢰할 수 없습니다. @Falcon165o에서 언급한 것인데 최근에 저도 그것과 마주쳤습니다.
그래서 현재 설치된 안드로이드의 String 데이터(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
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";
else if(release < 10) codeName="Pie";
else if(release >= 10) codeName="Android "+((int)release);//since API 29 no more candy code names
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
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"
else if (release < 10) codeName = "Pie"
else if (release >= 10) codeName = "Android "+(release.toInt())//since API 29 no more candy code names
return codeName + " v" + release + ", API Level: " + Build.VERSION.SDK_INT
}
생성되는 출력의 예:
마시멜로 v6.0, API 레벨: 23
예를 들어, 기능은 api21 이상에서만 작동하며 api21의 버그를 수정합니다.
if(Build.VERSION.SDK_INT >= 21) {
//only api 21 above
}else{
//only api 21 down
}
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you like.
}
사용 방법:
public static String getAndroidVersion() {
String versionName = "";
try {
versionName = String.valueOf(Build.VERSION.RELEASE);
} catch (Exception e) {
e.printStackTrace();
}
return versionName;
}
이 클래스를 사용합니다.
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
이을 사용할 수 :Android 장치다음기에 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
}
Android 설명서에 따르면:
Build.VERSION.REASE – "사용자가 볼 수 있는 버전 문자열입니다.예: "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
}
}
언급URL : https://stackoverflow.com/questions/3093365/how-can-i-check-the-system-version-of-android
'source' 카테고리의 다른 글
Windows 양식 레이블에서 텍스트를 선택할 수 있습니까? (0) | 2023.06.09 |
---|---|
Firestore - 문서에서 특정 필드 가져오기 (0) | 2023.06.09 |
gcc용 코드 생성기 백엔드를 어떻게 작성합니까? (0) | 2023.06.09 |
문자열에서 "를 검색하는 방법 - EXCEL (0) | 2023.06.09 |
MariaDB 테이블에 current_timestamp()를 삽입하는 데 문제가 발생했습니다. (0) | 2023.06.09 |