Android 具有较低API级别的C2DM?

Android 具有较低API级别的C2DM?,android,android-c2dm,Android,Android C2dm,C2DM要工作,设备显然必须达到API 8级。然而,这真的需要在该级别编译应用程序吗?使用C2DM的代码都不需要8级的API。那么,是否有可能让一个应用程序处于较低的级别,可能是API级别4或6,并让它尝试进行C2DM注册?可能在API级别较低的设备上注册失败,希望可以检测到这一点,以便使用替代机制。但是,API级别为8或更高的设备注册不应该成功吗?我在这里试图做的是在4级编译的同时利用C2DM,这样我的应用程序就能接触到最多的用户。理想情况下,这是可能的,我可以检测到设备何时不能进行C2DM,

C2DM要工作,设备显然必须达到API 8级。然而,这真的需要在该级别编译应用程序吗?使用C2DM的代码都不需要8级的API。那么,是否有可能让一个应用程序处于较低的级别,可能是API级别4或6,并让它尝试进行C2DM注册?可能在API级别较低的设备上注册失败,希望可以检测到这一点,以便使用替代机制。但是,API级别为8或更高的设备注册不应该成功吗?我在这里试图做的是在4级编译的同时利用C2DM,这样我的应用程序就能接触到最多的用户。理想情况下,这是可能的,我可以检测到设备何时不能进行C2DM,并做出相应的反应。

您可以使用
android.os.Build.VERSION.SDK
我相信可以确定设备支持和处理API 8的最高级别API,并且现在遇到这个问题的任何人都可以使用android.os.Build.VERSION.SDK,但您可以改用android.os.Build.VERSION.SDK_INT,如下所示:

    int current_sdk = android.os.Build.VERSION.SDK_INT;

    if (current_sdk >= android.os.Build.VERSION_CODES.FROYO) {
        registerForC2DM(activity);
    }

下面是您可以使用的所有版本代码的参考:

这可能比尝试捕获异常更有用。我目前正在试验,看看最初的想法是否有效。cn u帮助我发送推送通知,并为此发送一些代码。使用版本代码的一点是,如果您使用的是较低的API,它将是未定义的。例如:如果您使用的是API 7,并且您试图使用FROYO常量,那么它将是未定义的。这有点愚蠢,但只检查vs“8”似乎比检查FROYO更好,这样您就可以支持向后兼容。@triad否,常量在编译时计算,常量的值被放入dex文件而不是引用。