我们正在使用目标SDK 1.6构建Android应用,因此它将在1.6及更高版本的设备上运行。我们想支持动态壁纸,我们知道只有2.1+。有没有办法用1.6 SDK作为目标构建一个应用程序,但检测它运行的设备是否为2.1,并且仅在该场景中调用动态壁纸API。
我们试图避免必须构建单独的1.6和2.1版本,并且希望能够仅为2.1设备支持动态壁纸。所以要明确一个应用程序,它可以支持1.6和更高版本,并支持2.1设备的动态壁纸。
任何方式这样做?
答案 0 :(得分:2)
也许。我还没有使用动态壁纸,但这里是我在2. *上使用AccountManager的方法,但是在1. *的情况下有一个后备,但它不可用。
我使用2.1 SDK构建,但我的Manifest声明
<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)
}
希望有所帮助。