【发布时间】:2010-06-10 12:01:47
【问题描述】:
我需要在代码中检查当前在目标设备上运行的 Android 版本。能否提供代码示例?
【问题讨论】:
标签: android android-ndk
我需要在代码中检查当前在目标设备上运行的 Android 版本。能否提供代码示例?
【问题讨论】:
标签: android android-ndk
我一直在寻找这个,但没有找到解决方案 - 最终来到这里,我自己想出来了,所以对于那些正在寻找这个的人来说:
int SDK_INT = android.os.Build.VERSION.SDK_INT;
这将返回 os sdk level 7 eclair 8 froyo 等
【讨论】:
要获取 Android 的构建版本,例如:2.2、2.3.3、4.0 或 4.0.3 ... 使用以下代码:
String deviceVersion = Build.VERSION.RELEASE;
【讨论】:
我认为这是我自己的问题的重复:ndk version at run time。 简短的回答:本地应用程序没有简单的方法来做到这一点(但是您可以运行 Java 应用程序并与其通信以获取版本)。
【讨论】:
你能在你的设备上执行getprop ro.build.version.release shell 命令吗?
【讨论】:
这行得通
还导入以下内容:
import com.android.phonetests.TEST_INTERFACE;
import android.os.Build;
import android.app.ActivityThread;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
private int GetSDKVersion()
{
int version = 0;
IPackageManager pm = ActivityThread.getPackageManager();
try
{
//returns a ref to my application according to its application name
ApplicationInfo applicationInfo = pm.getApplicationInfo("com.android.phonetests", 0);
if (applicationInfo != null)
{
version = applicationInfo.targetSdkVersion; ////this makes the same -> version = Build.VERSION.SDK_INT
Log.i(LOG_TAG,"[DBG] version: " + version);
//2 is 5
//2.01 6 (Donut - 2.01)
//2.2 7 (Eclair - 2.2) currently it is Eclair_MR1 (Major Release)
switch (version)
{
case Build.VERSION_CODES.ECLAIR_MR1:
Log.i(LOG_TAG,"[DBG] version: ECLAIR");//2.2 7 (Eclair - 2.2) currently it is Eclair_MR1 (Major Release)
break;
case Build.VERSION_CODES.DONUT:
Log.i(LOG_TAG,"[DBG] version: DONUT");//2.01 6 (Donut - 2.01)
break;
}
}
}
catch (android.os.RemoteException e){}
return version;
}
【讨论】: