尝试访问android.os.Build.SERIAL(如果可用)

尝试访问android.os.Build.SERIAL(如果可用),android,Android,下面是我用来访问Build.SERIAL静态字段的一些代码,但在Android 1.6上运行时会崩溃 // introduced in Android 2.3(API Level 9) if (Integer.parseInt(android.os.Build.VERSION.SDK) >= android.os.Build.VERSION_CODES.GINGERBREAD) { deviceID = android.os.Build.SERIAL; //cann

下面是我用来访问Build.SERIAL静态字段的一些代码,但在Android 1.6上运行时会崩溃

// introduced in Android 2.3(API Level 9)
if (Integer.parseInt(android.os.Build.VERSION.SDK) >= android.os.Build.VERSION_CODES.GINGERBREAD) {
            deviceID = android.os.Build.SERIAL; //cannot execute here if runs on Android 1.6!!!
}
这是崩溃日志:

那么如何解决这个问题呢?

如果您检查Android,Android.os.Build.VERSION\u CODES.GINGERBREAD从API 9级GINGERBREAD开始就受到支持。将其从If条件中移除,然后以另一种方式进行检查。例如,检查SDK是否大于甜甜圈,然后执行其他操作以获取序列号

更新: 我的意思是像这样尝试,例如:

if (Integer.parseInt(android.os.Build.VERSION.SDK) >= 9) {
             deviceID = android.os.Build.SERIAL;
} 
如果您检查Android,Android.os.Build.VERSION_CODES.GINGERBREAD将从API 9级GINGERBREAD开始受支持。将其从If条件中移除,然后以另一种方式进行检查。例如,检查SDK是否大于甜甜圈,然后执行其他操作以获取序列号

更新: 我的意思是像这样尝试,例如:

if (Integer.parseInt(android.os.Build.VERSION.SDK) >= 9) {
             deviceID = android.os.Build.SERIAL;
} 

使用SDK_INT not SDK,因为它是一个整数而不是字符串,可以消除您所遇到的比较问题

这对我很有用:

if(Build.VERSION.SDK_INT >= 9){
        deviceID = android.os.Build.SERIAL;  
}

使用SDK_INT not SDK,因为它是一个整数而不是字符串,可以消除您所遇到的比较问题

这对我很有用:

if(Build.VERSION.SDK_INT >= 9){
        deviceID = android.os.Build.SERIAL;  
}

使用Build.VERSION.SDK_INT而不是Integer.parseIntandroid.os.Build.VERSION.SDK,然后通过Build.VERSION.SDK_INT>9等数字进行检查

使用Build.VERSION.SDK_INT而不是Integer.parseIntandroid.os.Build.VERSION.SDK,然后通过Build.VERSION.SDK_INT>9等数字进行检查。在1.6中无法访问此代码,您正在比较建造Gingerbread@alextsc,谢谢您的帮助@Mohamed_AbdAllah,是的,没错,我知道这一点,但它只是在Android 1.6上运行时崩溃,不知道为什么!在1.6版本中,您将无法访问此代码,因为您正在将构建与之进行比较Gingerbread@alextsc,谢谢您的帮助@Mohamed_AbdAllah,是的,没错,我知道这一点,但它只是在Android 1.6上运行时崩溃,不知道为什么!这就是我在上面的评论中所问的,这一行对于1.6来说是无法到达的!!但为什么会崩溃呢?它的行为不应该像那些代码行一样,不是吗?重要的是不要在你的支票中包括android.os.Build.VERSION\u code.gingerbrand。例如,你可以像在我更新的答案中一样使用它的整数值9,或者更好地修改If块来检查甜甜圈。对不起,实际上使用你建议的,你可以自己试试看它是否有效!您的清单文件中的目标SDK是什么这是我在上面的评论中询问的,这一行对于1.6来说是无法访问的!!但为什么会崩溃呢?它的行为不应该像那些代码行一样,不是吗?重要的是不要在你的支票中包括android.os.Build.VERSION\u code.gingerbrand。例如,你可以像在我更新的答案中一样使用它的整数值9,或者更好地修改If块来检查甜甜圈。对不起,实际上使用你建议的,你可以自己试试看它是否有效!清单文件中的目标SDK是什么