1

Android 라이브러리를 만들고 기기에 대한 정보를받는 방법이 있습니다. 우리의 목표는 2.2 이상을 지원하는 것이지만 이후 버전 (2.3의 장치 시리얼)에서 소개 된 정보를 수집하고 컴파일 할 버전 2.2로 응용 프로그램을 설정하는 방법이 있는지 궁금합니다.Android 라이브러리 대상 및 나중에 Android 버전의 객체

주위를 검색 한 후 나는 다음과 같은 코드를 사용하는 사람들을 발견 :이 코드 존재로,

private static String getHardwareSerial() { 
    try { 
     return Build.SERIAL; 
    } catch (VerifyError e) { 
     //Android 8 and previous did not have this information 
     return Build.UNKNOWN; 
    } 
} 

하지만를, 우리의 라이브러리를 사용하여 내 샘플 애플리케이션은 빌드 타겟을 설정할 때 8로 어떤 제안을 만들거나 우리를 할 실패 이 정보를 얻기 위해 목표를 9로 설정 한 고객과 함께 살아야합니까?

답변

1

당신은 반사를 통해 할 수있는 :

public static String getHardwareSerial() { 
    try { 
     Field serialField = Build.class.getDeclaredField("SERIAL"); 
     return (String)serialField.get(null); 
    } 
    catch (NoSuchFieldException nsf) { 
    } 
    catch (IllegalAccessException ia) { 
    } 
    return Build.UNKNOWN; 
} 

을 필드가 (OS의 이전 버전에서) 발견되지 않는 경우는 빌드를 반환 통해 가을 다음 무시됩니다 예외가 발생하고 있습니다 .알 수 없는.