代码之家  ›  专栏  ›  技术社区  ›  Adam Haile

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

  •  2
  • Adam Haile  · 技术社区  · 15 年前

    我正在开发一个android应用程序,我想在其中使用多点触控。不过,我不想完全排除那些仍在运行1.x操作系统手机的用户。如何对应用程序进行编程,以便可以使用2.x多点触控API(或任何其他更高级别的API)并仍然允许它在1.x系统上正常降级。如果您在eclipse中为1.x创建了一个项目,那么您还能访问2.xapi吗? 基本上,我希望它出现在市场上,在所有1.6和更高版本的手机上工作,只要允许访问更高级别的功能(如果有的话)。

    另外,如果有人能给我指出1.x设备数量与2.x设备使用数量的任何数据,我将不胜感激。

    3 回复  |  直到 13 年前
        1
  •  2
  •   Jim Blackler    15 年前

    下面是我如何在2.*上使用accountmanager,但在1.*上有一个备用项,在1.*上它不可用。

    我使用2.1sdk构建,但是我的清单状态

    <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
  •  2
  •   Dan Lew    15 年前

    关于这个话题有一篇很好的安卓文章叫做 Backward Compatibility for Applications “基本上你可以做两件事:

    1. 设置minsdkversion,以便应用程序将自己标识为与低于其编译版本的android兼容。

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

    您还可以创建一个包装类,以提高速度/易用性,但这只是2的一种味道。

    至于平台的使用, Google released this data a few months ago .

        3
  •  0
  •   Kevin Parker    13 年前

    使用反射似乎是一种方法:) 你好,API级别14的P2P Android WiFi

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