使用2.x API的Android应用程序也将在1.x上运行

时间:2010-04-12 12:29:54

标签: java android eclipse

我正在使用Android应用,我想使用多点触控。但是,我不想完全忽略那些仍在运行1.x OS手机的人。如何对应用程序进行编程,以便您可以使用2.x多点触控API(或任何其他更高级别的API)并仍允许它在1.x系统上正常降级。如果您在Eclipse中为1.x创建项目,您甚至可以访问2.x API吗? 基本上我希望它能够在市场上出现并适用于所有1.6及更高版本的手机,并且只允许访问更高级别的功能。

此外,如果有人可以向我指出有关1.x设备与2.x设备使用数量的任何数据,我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

关于此主题的Android文章名为“Backward Compatibility for Applications”。基本上你可以做两件事:

  1. 设置minSdkVersion,以便应用程序将自己标识为与Android版本兼容的Android版本兼容。

  2. 使用反射来访问较新的API。

  3. 您还可以创建一个包装类来提高速度/易用性,但这只是#2的风格。

    至于平台使用情况,Google released this data a few months ago

答案 1 :(得分: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)
}

希望有所帮助。

答案 2 :(得分:0)

使用反射似乎是要走的路:) 你好p2p API级别14的Android Wifi

http://developer.android.com/resources/articles/backward-compatibility.html