1

我需要我的应用程序通过调用 3.0(级别 11)API View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) 来隐藏三星 9250/Galaxy Nexus 上的虚拟键,但我仍然需要我的 APK 可在装有 Android v2.2/2.3/2.31 的设备上运行。

也许我会用

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
}

但是我应该在清单文件中做什么以及我应该使用哪个库来构建项目?

谢谢。

4

2 回答 2

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 平台上似乎都可以。

但是我在Samsung Nexus(9250)上遇到了这个问题,即使调用getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE),我可以得到1196*720,但实际上我需要1280*720。

获得冰淇淋三明治的真实屏幕分辨率

还有其他我们可以使用的 API 吗?

谢谢。

于 2012-05-30T07:21:32.250 回答
1

当然有几个选项可以支持不使用相同 API 的多个 Android 版本,一种是反射,另一种是使用包装类。支持多个平台版本是很常见的事情,这里有一篇相当全面的文章

要正确设置,AndroidManifest.xml您需要添加以下标签:

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

其中最低 SDK 是您的应用程序支持的最低 SDK,而目标是您的应用程序已经过测试且您知道有效的最高 SDK。如果您真的不希望您的应用程序在某个 API 级别之上使用(可能您使用了较新版本不支持的已弃用方法),则最大 SDK 是可选的。

编辑:至于使用哪个库,请选择能够为您提供所需所有功能的最低版本。如果您需要仅在 API 级别 11 中可用的方法,请使用它。如果它最终高于您的“最低支持版本”,请记住非常仔细地测试早期版本。

于 2012-05-30T03:35:33.693 回答