【问题标题】:Checking Android version [duplicate]检查Android版本[重复]
【发布时间】: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);
                }

怎么了?

【问题讨论】:

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

标签: android version


【解决方案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 中的固定常量。这增加了可读性并避免了此类错误。
    猜你喜欢
    • 2016-02-03
    • 2014-11-20
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多