我有一个原生界面,有两个原因需要设备的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。
答案 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());