if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
// Do something for lollipop and above versions
} else{
// do something for phones running an SDK before lollipop
}
public static boolean froyoOrNewer() {
// SDK_INT is introduced in 1.6 (API Level 4) so code referencing that would fail
// Also we can't use SDK_INT since some modified ROMs play around with this value, RELEASE is most versatile variable
if (android.os.Build.VERSION.RELEASE.startsWith("1.") ||
android.os.Build.VERSION.RELEASE.startsWith("2.0") ||
android.os.Build.VERSION.RELEASE.startsWith("2.1"))
return false;
return true;
}
9 回答
如Android文档中所述,手机运行的SDK级别(整数)可用于:
android.os.Build.VERSION.SDK_INT
与此int对应的类位于android.os.Build.VERSION_CODES类中 .
代码示例:
Edit :这个SDK_INT自Donut(android 1.6 / API4)开始提供,所以当你使用它时,确保你的应用程序与Cupcake(android 1.5 / API3)不兼容,否则你的应用程序会崩溃(感谢Programmer Bruce的精确度) .
对应的android文档是here和here
非常简单:
输出:
这将为您提供您的版本的实际数字;又名2.3.3或2.2 . 使用Build.VERSION.SDK_INT的问题是,如果你有一个root的手机或自定义ROM,你可能有一个非标准的操作系统(也就是我的android运行2.3.5),当使用Build.VERSION.SDK_INT时将返回null所以无论如何,Build.VERSION.RELEASE都能正常工作!
要使用它,你可以这样做;
考虑到所有说法,这里是用于检测设备是否具有Froyo或更新Android OS(2.2)的代码:
显然,如果您需要通用检查器,可以修改如果条件考虑1.0和1.5版本的Android . 你可能会得到这样的东西:
如果代码不适合您,请告诉我 .
试试这个:
android.os.Build.VERSION.SDK应该为您提供API级别的值 . 你可以在android文档中轻松找到从api级到android版的映射 . 我相信,8是2.2,7是2.1,依此类推 .
得到它了 . 它使用
Context
类的getApplicationInfo()
方法 .我更喜欢将版本作为数字,比我写的更简单:
我改进了我使用的代码