如何在本机界面中获取Android设备当前的SDK级别

时间:2016-06-26 05:35:28

标签: codenameone

我有一个原生界面,有两个原因需要设备的SDK级别。首先是一些方法已被弃用,因此我需要确定设备是否具有足够高的新API版本,第二个是SDK级别23需要新的权限,但在设备上添加该权限

我已经尝试过以下这样的陈述,但我认为它不起作用:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2)

我还尝试了上面只有表示级别的整数,例如JELLY_BEAN_MR2的18。这有AndroidNativeUtil吗?我无法找到有关AndroidNativeUtil中哪些类的文档。

我认为它不起作用的原因是当我添加这些语句来控制使用哪个API时,应用程序在具有更高API级别的较新设备上正常工作,但挂起具有较旧API级别的设备。我假设它必须始终认为API> 18。

1 个答案:

答案 0 :(得分:1)

字符串Build.VERSION.RELEASE将为您提供用户可见的版本字符串(即1.5,1.6,2.0),而Build.VERSION.SDK_INT将为您提供来自Build.VERSION_CODES的更好的值如果你想以编程方式与它进行比较,请使用。

请注意,Build.VERSION.SDK_INT仅适用于Android 1.6及更高版本。 Build.VERSION.SDK适用于所有Android版本,包括1.5。但是,一旦您选择降低1.5支持,切换到SDK_INT是一个好主意。

编辑:

StringBuffer buf = new StringBuffer();

buf.append("VERSION.RELEASE {"+Build.VERSION.RELEASE+"}");
buf.append("\\nVERSION.INCREMENTAL {"+Build.VERSION.INCREMENTAL+"}");
buf.append("\\nVERSION.SDK {"+Build.VERSION.SDK+"}");
buf.append("\\nBOARD {"+Build.BOARD+"}");
buf.append("\\nBRAND {"+Build.BRAND+"}");
buf.append("\\nDEVICE {"+Build.DEVICE+"}");
buf.append("\\nFINGERPRINT {"+Build.FINGERPRINT+"}");
buf.append("\\nHOST {"+Build.HOST+"}");
buf.append("\\nID {"+Build.ID+"}");

Log.d("build",buf.toString());