检查Android版本[重复]

Posted

技术标签:

【中文标题】检查Android版本[重复]【英文标题】:Checking Android version [duplicate] 【发布时间】:2012-08-26 02:20:53 【问题描述】:

可能重复:Retrieving android API version programmatically

如果运行应用程序 api 级别的手机是 14,即 android 4.0 或更高版本(例如 api levcel 15),那么我需要 startActivity ...否则如果 api 级别低于 14(例如 13),那么 startActivity .. .

                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);
                

怎么了?

【问题讨论】:

possible duplicate 在您的问题中,您声明“(...)这是 android 4.0 或更高版本(...)”,但您使用的是 ==。仅当版本正好是 4.0 时才适用,但如果是 4.0.3、4.1 或其他版本则不适用。 【参考方案1】:

使用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 添加活动),这是一个好习惯,可以防止您的应用程序崩溃,同时在日志中提供有用的信息

【讨论】:

我想要 api 级别是否为 14+ 所以如果它是 14 或 15 或 16 则启动 Menu 否则如果它小于 14 (例如 13,12,11, .... )启动 Menu2 ..这行得通吗? 是的,请参阅条件:">=" 这意味着 Menu.class 用于所有 ICS 和更新版本,而 Menu2.class 用于任何其他情况(在这种情况下意味着更低比 ICS) 顺便说一句,我正在使用 int AndroidVersion = android.os.Build.VERSION.SDK_INT; if (AndroidVersion >= 14) .. 对吗? 哦,好的,谢谢.. 接受 技术上是的,但无论如何我都会将14 替换为Build.VERSION_CODES.ICE_CREAM_SANDWICH,因为这会使您的代码更具可读性(您不必怀疑“API 14 到底是什么”)。它仍然是 14,因为这是在 SDK 中定义的常量(您可以将鼠标悬停在 Eclipse 中以查看确切的值),但是您查看并立即看到“好的,这是 ICS 及以上”。即使在最严重的宿醉中也很明显:)【参考方案2】:

比较整数版本更简洁,使用 >= 以实现未来兼容性

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

【讨论】:

【参考方案3】:

这样就可以了!

     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);
            

【讨论】:

这将检查您是否在 android 1.6 上运行。由于使用了错误的 int 而不是 ICS。而是使用 Build.VERSION_CODES 中的固定常量。这增加了可读性并避免了此类错误。

以上是关于检查Android版本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式检查Android版本[重复]

我如何检查运行我的应用程序的 Android 设备是不是在 4.2.2 及更低版本上运行 [重复]

如何检查我是否在Android 4.4及以上版本中以编程方式打开gps? [重复]

Android:从 Android 代码中获取 APKs minSdkVersion [重复]

Android - 检查单选按钮选中[重复]

检查互联网数据是不是接收(Android)[重复]