2011-10-17 108 views
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; 
} 

如果沒有發現場(在早期版本的操作系統),它會拋出,將被忽略的異常,然後告吹返回構建。未知。