Мне нужно проверить в коде, какая версия Android работает на целевом устройстве. Можете ли вы привести пример кода?
Я искал это и не нашел решения - закончил здесь, и я понял это сам, так что для любого, кто ищет это:
int SDK_INT = android.os.Build.VERSION.SDK_INT;
этовозвращает OS SDK уровня 7 эклер 8 Froyo и т. д.
Чтобы получить версию сборки Android, такую как: 2.2, 2.3.3, 4.0 или 4.0.3 ... , используйте следующий код:
String deviceVersion = Build.VERSION.RELEASE;
Можете ли вы выполнить getprop ro.build.version.release команду оболочки на вашем устройстве?
getprop ro.build.version.release
Я думаю, что это дубликат моего собственного вопроса: ndk версия во время выполнения . Краткий ответ: у нативного приложения нет простого способа сделать это (однако вы можете запустить приложение Java и связаться с ним, чтобы получить версию).
Это работает
и импортирует следующее:
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; }