2012-05-30 27 views
1

我需要我的APP來隱藏三星9250/Galaxy Nexus上的虛擬鍵,通過調用3.0(level 11)API View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION),但我仍然需要使用Android v2.2/2.3/2.31在設備上運行我的APK。我想使用API​​ v3.x提供的API,但使APK可運行在設備上使用Android v2.2/2.3/2.3.1

也許我應該使用

int SDK_INT = android.os.Build.VERSION.SDK_INT; 
if(SDK_INT >= 11) { 
     getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
}else{ 
     //do nothing 
} 

但我將在清單文件做和圖書館應我用它來構建項目?

謝謝。

回答

1

對於支持不使用相同API的多個Android版本,肯定有一些選擇,一種方法是反射,另一種方法是使用包裝類。支持多種平臺版本是很常見的事情,並且在here上有一篇相當全面的文章。

要設置適當的AndroidManifest.xml你需要添加以下代碼:

<uses-sdk 
    android:minSdkVersion="4" 
    android:targetSdkVersion="10" 
    android:maxSdkVersion="10" /> 

其中最小SDK是最低的應用程序支持,目標是你的應用程序已經在所測試的最高你知道作品。如果您真的不希望您的應用程序在特定API級別以上使用(可能您使用新版本不支持的棄用方法),則最大SDK是可選的。

編輯:至於要使用哪個庫,選擇最低版本,爲您提供所需的所有功能。如果您只需要API級別11中的方法,請使用該方法。如果結果高於「最低支持版本」,請記住非常仔細地測試早期版本。

2

謝謝你的幫助。

反射或包裝類似乎太複雜。

我只是用4.0 LIB打造,設置

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> 

,並使用

if(Build.VERSION.SDK_INT >= HIDENAVIGATION_MIN_SDK) 
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); 

看來雙方4.x和2.2/2.3平臺確定。

但我遇到問題的三星Nexus(9250),即使getWindow()。getDecorView()。setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE)被調用時,我可以得到1196 * 720,但我需要1280 * 720實際。

Get the real screen resolution on Ice Cream Sandwich

是否有任何其他的API,我們可以使用?

謝謝。

相關問題