2012-08-31 128 views
2

可能重复:
Retrieving Android API version programmatically检查Android版本

我需要的,如果在手机上运行的应用程序API级别为14的是Android 4.0或更高(例如API levcel 15),然后startActivity ...如果api等级低于14(示例13),则启动活动... ...

   String AndroidVersion = android.os.Build.VERSION.RELEASE; 
       if (AndroidVersion == 4.0) { 
        Intent start = new Intent(S.this, Menu.class); 
        startActivity(start);      
       } 
       else { 
        Intent startt = new Intent(S.this, Menu2.class); 
        startActivity(startt); 
       } 

wh错在哪里?

+1

[可能重复](http://stackoverflow.com/q/3423754/1465828) – Aprian

+2

使用.equals方法。 –

+0

在你的问题中,你陈述“(...)是Android 4.0或更多(...)”,但你正在使用==。这只有在版本正好是4.0的情况下才是正确的,但如果是4.0.3,4.1或其他情况则不正确。 –

回答

4

使用SDK_INT而不是RELEASE。因此,您的代码如下所示:

Intent intent; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    intent = new Intent(S.this, Menu.class); 
} else { 
    intent = new Intent(S.this, Menu2.class); 
} 

try { 
    startActivity(intent); 
} catch(Exception e) { 
    e.printStackTrace(); 
} 

所有的SDK代码都是listed here。注意总是从startActivity()中捕获可能的异常;它不会受到伤害(即使在您的应用程序中 - 您可以随时忘记在开发过程中向Manifest添加活动),是一种好习惯,可以防止应用程序崩溃,同时提供日志中有用的东西

+0

我想如果API级别是14+,所以如果它是14或15或16开始菜单否则,如果它小于14(例如13,12,11,....)开始Menu2 ..这将工作正确吗? –

+0

是的,查看条件:“> =”这意味着所有ICS和更新版本都使用了Menu.class,而其他任何情况下都使用了Menu2.class(这意味着任何低于ICS的情况) –

+0

btw使用\t \t \t \t \t int AndroidVersion = android.os.Build.VERSION.SDK_INT; \t \t if(AndroidVersion> = 14){..这是正确的吗? –

0

比较整数版本,并使用> =为了将来的兼容性

if (android.os.Build.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
0

这样做!

 if (Build.VERSION.SDK_INT == 4) { 
      Intent start = new Intent(S.this, Menu.class); 
      startActivity(start);      
     } 
     else { 
      Intent startt = new Intent(S.this, Menu2.class); 
      startActivity(startt); 
      } 
+1

这将检查你是否在android 1.6上运行。由于使用了错误的int而不是ICS。而是使用Build.VERSION_CODES中的固定常量。这增加了可读性并避免了这样的错误。 – 2012-08-31 09:34:16