2

我们正在使用目标 SDK 1.6 构建一个 Android 应用程序,因此它将在 1.6 或更高版本的设备上运行。我们想支持动态壁纸,我们知道它只是 2.1+。有没有办法以 1.6 SDK 作为目标构建一个应用程序,但检测它运行的设备是否为 2.1,并且仅在这种情况下调用动态壁纸 API。

我们试图避免构建单独的 1.6 和 2.1 版本,并且希望能够仅支持 2.1 设备的动态壁纸。所以要明确 - 1 个应用程序,可以支持 1.6 及更高版本,并支持 2.1 设备的动态壁纸。

有什么办法吗?

4

1 回答 1

2

也许。我没有使用过动态壁纸,但这是我在 2.* 上使用 AccountManager 的方式,但在 1.* 上它不可用时有一个后备。

我使用 2.1 SDK 构建,但我的清单声明

<uses-sdk android:minSdkVersion="3" />

这确实允许应用程序在 1.5 以上的设备上运行。

我将 android.accounts.AccountManager 的使用限制为一个包装类,我称之为 UserEmailFetcher。

可以在 2.* 设备上使用此类。然而,在早期的设备上,java.lang.VerifyError 将在代码中第一次遇到此类时触发。我抓住了这一点,并执行了一些后备动作。

String name;
try {
   name = UserEmailFetcher.getEmail(this); 
} catch (VerifyError e) {
   // Happens if the AccountManager is not available (e.g. 1.x)
}

希望有帮助。

于 2010-04-02T14:23:20.617 回答