【问题标题】:How can I check in code the Android version like 1.5 or 1.6如何签入 Android 版本(如 1.5 或 1.6)的代码
【发布时间】:2010-06-10 12:01:47
【问题描述】:

我需要在代码中检查当前在目标设备上运行的 Android 版本。能否提供代码示例?

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    我一直在寻找这个,但没有找到解决方案 - 最终来到这里,我自己想出来了,所以对于那些正在寻找这个的人来说:

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

    这将返回 os sdk level 7 eclair 8 froyo 等

    【讨论】:

    • 这实际上并不是问题的正确答案,因为 SDK_INT 从 API 级别 4(甜甜圈,1.6)开始可用。因此,它在尝试检测 1.5 时失败了,这是问题的一部分......
    【解决方案2】:

    要获取 Android 的构建版本,例如:2.2、2.3.3、4.0 或 4.0.3 ... 使用以下代码:

    String deviceVersion = Build.VERSION.RELEASE;
    

    【讨论】:

      【解决方案3】:

      我认为这是我自己的问题的重复:ndk version at run time。 简短的回答:本地应用程序没有简单的方法来做到这一点(但是您可以运行 Java 应用程序并与其通信以获取版本)。

      【讨论】:

        【解决方案4】:

        你能在你的设备上执行getprop ro.build.version.release shell 命令吗?

        【讨论】:

          【解决方案5】:

          这行得通

          还导入以下内容:

          import com.android.phonetests.TEST_INTERFACE;
          import android.os.Build;
          import android.app.ActivityThread;
          import android.content.pm.ApplicationInfo;
          import android.content.pm.IPackageManager;
          
          
          private int GetSDKVersion()
          {
              int version = 0;
              IPackageManager pm = ActivityThread.getPackageManager();
              try
              {
                  //returns a ref to my application according to its application name
                  ApplicationInfo applicationInfo = pm.getApplicationInfo("com.android.phonetests", 0);
          
                  if (applicationInfo != null) 
                  {           
                      version = applicationInfo.targetSdkVersion; ////this makes the same -> version = Build.VERSION.SDK_INT
                      Log.i(LOG_TAG,"[DBG] version: " + version);  
          
                      //2 is 5
                      //2.01 6 (Donut - 2.01)
                      //2.2  7 (Eclair - 2.2) currently it is Eclair_MR1 (Major Release)                  
                      switch (version) 
                      {                           
                          case Build.VERSION_CODES.ECLAIR_MR1:
                          Log.i(LOG_TAG,"[DBG] version: ECLAIR");//2.2  7 (Eclair - 2.2) currently it is Eclair_MR1 (Major Release)
                          break;
                          case Build.VERSION_CODES.DONUT:
                          Log.i(LOG_TAG,"[DBG] version: DONUT");//2.01 6 (Donut - 2.01)
                          break;
                      }
                  }
              } 
              catch (android.os.RemoteException e){}      
              return version;
          }
          

          【讨论】:

          • 不幸的是,这不适用于我的 2.1 Nexus One。 “com.android.phonetests”似乎不存在。
          • 您不应该只是获取 Build.VERSION.SDK_INT 中定义的值,而不是从某个随机包中查询 targetSdkVersion 吗?
          • 谢谢,不知道为什么我一开始没用这个?我只是走了一条艰难的路:-(谢谢伊拉娜
          • Steve Pomeroy,我使用了我的 apk 文件的包名 => com.android.phonetests。现在任何使用我的代码示例的人都应该用他/她的包名粗略地改变它!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-15
          • 2014-04-12
          • 1970-01-01
          • 1970-01-01
          • 2012-01-30
          • 1970-01-01
          相关资源
          最近更新 更多