program tip

프로그래밍 방식으로 Android API 버전 검색

radiobox 2020. 10. 4. 10:48
반응형

프로그래밍 방식으로 Android API 버전 검색


휴대폰이 현재 실행중인 API 버전을 가져올 수있는 방법이 있습니까?


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

android.os.Build.VERSION.SDK_INT

이 int에 해당하는 android.os.Build.VERSION_CODES클래스 클래스에 있습니다.

코드 예 :

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는 Donut (android 1.6 / API4) 이후로 사용할 수 있으므로 응용 프로그램을 사용할 때 Cupcake (android 1.5 / API3)와 레트로 호환되지 않는지 확인하십시오. 그렇지 않으면 응용 프로그램이 충돌합니다 (정확성에 대해 프로그래머 Bruce에게 감사드립니다) .

해당 Android 문서는 여기여기에 있습니다.


아주 쉽게:

   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. Build.VERSION.SDK_INT 사용의 문제는 루팅 된 전화 또는 사용자 지정 ROM이있는 경우 비표준 OS (일명 내 안드로이드가 2.3.5를 실행 중임)를 사용할 수 있으며 Build.VERSION.SDK_INT를 사용할 때 null을 반환한다는 것입니다. 따라서 Build.VERSION.RELEASE는 표준 Android 버전 사용 여부와 관계없이 작동합니다!

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

String androidOS = Build.VERSION.RELEASE;

모든 것을 고려하여 기기에 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;
}

일반 검사기가 필요한 경우 Android 1.0 및 1.5 버전을 고려하여 if 조건을 수정할 수 있습니다. 아마도 다음과 같이 끝날 것입니다.

// 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;
    }
}

코드가 작동하지 않으면 알려주세요.


이 시도:

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

android.os.Build.VERSION.SDK should give you the value of the API Level. You can easily find the mapping from api level to android version in the android documentation. I believe, 8 is for 2.2, 7 for 2.1, and so on.


Got it. Its using the getApplicationInfo() method of the Context class.


i prefer have the version as number to be handeled more easyway than i wrote this:

  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();
}

I improved code i used

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;
}

Its Working Happy Coding

String versionRelease = BuildConfig.VERSION_NAME;

versionRelease :- 2.1.17

Note Please make sure your import package is correct ( import package your application package name otherwise it's not work properly)

참고URL : https://stackoverflow.com/questions/3423754/retrieving-android-api-version-programmatically

반응형