2010-10-30 100 views
3

要使C2DM正常工作,设备显然必须处于API级别8.但是,这是否确实需要将应用程序编译为该级别?没有任何与C2DM一起工作的代码需要8级的任何API。因此,是否有可能在较低级别(可能是API级别4或6)上安装应用程序,并尝试进行C2DM注册?也许在API级别较低的设备上注册失败,并希望可以检测到这种情况,以便可以使用替代机制。但是,API级别8或更高级别的设备不应注册成功?我在这里要做的是利用C2DM,同时仍然在4级编译,这样我的应用可以达到最多的用户数量。理想情况下,这是可能的,我可以检测到设备何时无法使用C2DM,并据此做出反应。具有较低API级别的C2DM?

+0

cn您可以帮我推送通知并发送一些代码 – shripal 2011-05-07 06:54:06

回答

2

您可以使用android.os.Build.VERSION.SDK我相信可以确定设备支持的最高级别API,并单独处理API 8和< 8,而不需要用户处于某个API级别来安装该应用程序。

+0

这可能比试图捕获异常更有用。我正在尝试着看看最初的想法是否有效。 – michaelg 2010-11-01 22:21:39

0

对于任何人谁碰到这个现在来 - 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); 
    } 

以下是您可以使用的所有版本代码的参考:http://developer.android.com/reference/android/os/Build.VERSION_CODES.html

+0

啊,是的!你是对的。感谢您的支持! – ruxy 2012-03-09 23:19:51

+0

关于使用VERSION_CODES的一件事是,如果你在一个较低的API上,它将是未定义的。例如:如果您使用的是API 7,并且您尝试使用FROYO常量,则它将不确定。这有点愚蠢,但检查vs'8'似乎比FROYO好,所以你可以支持向后兼容性。 – triad 2012-03-09 23:27:00

+0

@triad否,在编译时计算常量,并将常量的值放入dex文件而不是引用。 – 2012-05-07 11:49:50

相关问题