programing

Android API 버전을 프로그래밍 방식으로 검색하는 중

lovejava 2023. 7. 18. 21:24

Android API 버전을 프로그래밍 방식으로 검색하는 중

전화기가 현재 실행 중인 API 버전을 얻을 수 있는 방법이 있습니까?

Android 설명서에 설명된 대로 전화기에서 실행 중인 SDK 수준(정수)은 다음에서 사용할 수 있습니다.

android.os.Build.VERSION.SDK_INT

이 int에 해당하는 클래스가 클래스에 있습니다.

코드 예:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
    // Do something for lollipop and above versions
} else{
    // do something for phones running an SDK before lollipop
}

편집: 이 SDK_INT는 도넛(안드로이드 1.6 / API4) 이후부터 사용할 수 있으므로 사용 시 애플리케이션이 컵케이크(안드로이드 1.5 / API3)와 역호환되지 않도록 하십시오. 그렇지 않으면 애플리케이션이 중단됩니다(정확성에 대한 프로그래머 브루스 덕분입니다).

해당 안드로이드 설명서는 여기와 여기에 있습니다.

매우 쉽습니다.

   String manufacturer = Build.MANUFACTURER;
   String model = Build.MODEL;
   int version = Build.VERSION.SDK_INT;
   String versionRelease = Build.VERSION.RELEASE;

Log.e("MyActivity", "manufacturer " + manufacturer
            + " \n model " + model
            + " \n version " + version
            + " \n versionRelease " + versionRelease
    );

출력:

E/MyActivity:   manufacturer ManufacturerX
                model SM-T310 
                version 19 
                versionRelease 4.4.2
Build.VERSION.RELEASE;

그러면 버전의 실제 숫자(2.3.3 또는 2.2)가 표시됩니다.빌드 사용과 관련된 문제입니다.VERSION.SDK_INT는 루트 전화기나 커스텀 롬이 있는 경우 비표준 OS(안드로이드가 2.3.5를 실행하고 있음)를 사용할 수 있으며 빌드를 사용할 때 null을 반환합니다.VERSION.SDK_INT를 빌드합니다.VERSION.REASE는 표준 Android 버전을 사용하든 사용하지 않든 상관없이 작동합니다!

사용하려면 이렇게 하면 됩니다.

String androidOS = Build.VERSION.RELEASE;

사용해 보십시오.

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

위의 모든 사항을 고려하여, 기기에 Froyo 또는 최신 Android OS(2.2+)가 있는지 감지하는 데 사용하는 코드는 다음과 같습니다.

public static boolean froyoOrNewer() {
    // SDK_INT is introduced in 1.6 (API Level 4) so code referencing that would fail
    // Also we can't use SDK_INT since some modified ROMs play around with this value, RELEASE is most versatile variable
    if (android.os.Build.VERSION.RELEASE.startsWith("1.") ||
        android.os.Build.VERSION.RELEASE.startsWith("2.0") ||
        android.os.Build.VERSION.RELEASE.startsWith("2.1"))
        return false;

    return true;
}

물론 일반 체커가 필요할 경우 안드로이드 1.0 및 1.5 버전을 고려하여 조건을 수정할 수 있습니다.다음과 같은 결과를 초래할 수 있습니다.

// returns true if current Android OS on device is >= verCode 
public static boolean androidMinimum(int verCode) {
    if (android.os.Build.VERSION.RELEASE.startsWith("1.0"))
        return verCode == 1;
    else if (android.os.Build.VERSION.RELEASE.startsWith("1.1")) {
        return verCode <= 2;
    } else if (android.os.Build.VERSION.RELEASE.startsWith("1.5")) {
        return verCode <= 3;
    } else {
        return android.os.Build.VERSION.SDK_INT >= verCode;
    }
}

당신에게 코드가 안 되면 알려주세요.

안드로이드.os.빌드.VERSION.SDK는 API Level의 가치를 제공해야 합니다.api 레벨에서 안드로이드 버전으로의 매핑은 안드로이드 설명서에서 쉽게 찾을 수 있습니다.8은 2.2에, 7은 2.1에 해당한다고 생각합니다.

SDK.INT는 Android 1.6 이상에서 지원됩니다.

SDK는 모든 버전에서 지원됩니다.

그래서 나는:

String sdk_version_number = android.os.Build.VERSION.SDK;

크레딧: 이 답변에 대한 CommonsWare

알겠습니다. 그것은 사용하는 것입니다.getApplicationInfo()의 방법Context학급.

저는 일반적으로 안드로이드 버전을 얻기 위해 다음 코드를 추가하는 것을 선호합니다.

int whichAndroidVersion;

whichAndroidVersion= Build.VERSION.SDK_INT;
textView.setText("" + whichAndroidVersion); //If you don't use "" then app crashes.

예를 들어, 위의 코드는 텍스트를 내 textView에 "29"로 설정합니다.

나는 내가 이것을 쓴 것보다 더 쉽게 다룰 수 있는 버전을 숫자로 갖는 것을 선호합니다.

  public static float getAPIVerison() {

    Float f = null;
    try {
        StringBuilder strBuild = new StringBuilder();
        strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2));
        f = new Float(strBuild.toString());
    } catch (NumberFormatException e) {
        Log.e("", "error retriving api version" + e.getMessage());
    }

    return f.floatValue();
}

사용한 코드를 개선했습니다.

public static float getAPIVerison() {

    float f=1f;
    try {
        StringBuilder strBuild = new StringBuilder();
        strBuild.append(android.os.Build.VERSION.RELEASE.substring(0, 2));
        f= Float.valueOf(strBuild.toString());
    } catch (NumberFormatException e) {
        Log.e("myApp", "error retriving api version" + e.getMessage());
    }

    return f;
}

언급URL : https://stackoverflow.com/questions/3423754/retrieving-android-api-version-programmatically