4

我很确定以前有人问过这个问题,但是我在任何地方都找不到,所以请不要咬。

我正在编写一个 android 应用程序,它需要与附近的设备通信,如果有两个设备碰巧在附近,我想使用 WifiDirect API。

但如果不是这种情况,应用程序仍然可以工作,它将使用其他不太有效的方式在参与设备之间进行通信(如 Wifi 接入点共享)。

我还希望这个应用程序能够在像 a​​ndroid 2.2 这样根本没有 WifiDirect API 的旧设备上运行(我认为 >=4.0)。

那么有没有办法让我的应用程序有选择地使用新的 API,但不一定适用于旧手机?

4

2 回答 2

9

所以请不要咬人

我们至少可以啃一点吗?只是一点点?

:-)

那么有没有办法让我的应用程序有选择地使用新的 API,但不一定适用于旧手机?

您可以在 Java 版本保护块中包装对新类/方法的引用:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
  // do stuff with WifiP2pManager
}
// optional else block for workaround for older devices

WiFiDirect 可能还有其他细节,我还没有使用过,但这是基本步骤。

于 2012-12-19T00:17:14.917 回答
0

您可以使用 来检查当前的 API 级别Build.VERSION.SDK_INT。在 if/case 语句中使用为不同的 API 选择不同的代码。此外,如果您的 minSdk 设置较少,您可能会收到有关专门为以后的 API 编写的代码的错误或警告。您可以通过注释这些后来的 API 类来解决这些问题@TargetApi(APILEVEL)

于 2012-12-19T00:19:45.837 回答