1

在我的应用程序中,我想显示设备的 Android 操作系统代码名称。即,我想在运行时从设备获取类似Honeycomb或实用的 android 操作系统代码名称。Gingerbread

有没有办法让那个代号刺痛自己?我想在我的应用程序的一个屏幕中显示该名称。

我可以像这样比较并对字符串进行硬编码。

 if (Build.VERSION.SDK_INT==Build.VERSION_CODES.GINGERBREAD) {

    CodeName=”GINGERBREAD”

 } else if (Build.VERSION.SDK_INT==Build.VERSION_CODES.HONEYCOMB){

    CodeName=”Honeycom”
 }

但是如果明天发布新版本,那么我必须再次更改代码。这就是为什么我要寻找一些为什么要获取代码名称字符串本身而不是获取版本号的原因。

那么任何人都可以建议一些方法来获取设备的操作系统代码名称,就像我们获得操作系统版本号一样?

4

6 回答 6

4

尝试这个。

enum Codenames
{
    BASE, BASE_1,
    CUPCAKE, 
    DONUT, 
    ECLAIR, ECLAIR_MR1, ECLAIR_MR2, 
    FROYO,
    GINGERBREAD, GINGERBREAD_MR1, 
    HONEYCOMB, HONEYCOMB_MR1, HONEYCOMB_MR2,
    ICE_CREAM_SANDWICH, ICE_CREAM_SANDWICH_MR1,
    JELLY_BEAN;

    public static Codenames getCodename()
    {
        int api = Build.VERSION.SDK_INT;

        switch (api) {
        case 1:

            return BASE;
        case 2:

            return BASE_1;
        case 3:

            return CUPCAKE;
        case 4:

            return DONUT;
        case 5:

            return ECLAIR;
        case 6:

            return ECLAIR_MR1;
        case 7:

            return ECLAIR_MR2;
        case 8:

            return FROYO;
        case 9:

            return GINGERBREAD;
        case 10:

            return GINGERBREAD_MR1;
        case 11:

            return HONEYCOMB;
        case 12:

            return HONEYCOMB_MR1;
        case 13:

            return HONEYCOMB_MR2;
        case 14:

            return ICE_CREAM_SANDWICH;
        case 15:

            return ICE_CREAM_SANDWICH_MR1;
        case 16:

            return JELLY_BEAN;
        default:
            return null;
        }
    }

};

然后做

Codenames c = Codenames.getCodename();
于 2012-10-17T06:19:27.593 回答
2

Android 文档中没有 API 可以为您返回代号字符串。您只能获得类似 2.3 的 VERSION NUMBER,您可以向用户展示。

于 2012-10-17T06:14:06.210 回答
2

为什么不使用反射?

    String versionCodename = null;
    Field[] fields = Build.VERSION_CODES.class.getFields();
    for (int i = 0; i < fields.length; i++) {
        Field fld = fields[i];
        try {
            int val = fld.getInt(null);
            if (val == Build.VERSION.SDK_INT && fld.getName().length() > 1) {
                String fldName = fld.getName();
                versionCodename = fldName.substring(0, 1).toUpperCase() + fldName.substring(1).toLowerCase();
                break;
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
于 2015-05-19T06:50:16.760 回答
2

导入 java.lang.reflect.Field;

  Field[] fields = Build.VERSION_CODES.class.getFields();

  String osName = fields[Build.VERSION.SDK_INT + 1].getName();

  Log.d("OsName",""+osName);
于 2016-07-28T13:53:48.247 回答
0

像这样,只需将其更改.GINGERBREAD为您想要的任何内容,即。.HONEYCOMB

if (Build.VERSION.SDK_INT<Build.VERSION_CODES.GINGERBREAD) {
     // do code for device before gingerbread
} 

还可以在这里查看更多信息 - http://developer.android.com/reference/android/os/Build.VERSION.html

编辑 - 要将版本号作为 int 获取,您可以

int versionNumber = Build.VERSION.SDK_INT;

然后你可以使用

if (versionNumber == 2.3){
    //do code here
}
于 2012-10-17T05:40:06.847 回答
-1

不推荐使用的字符串Build.VERSION.SDK应该可以工作

于 2013-03-03T21:51:50.963 回答