Build.VERSION.SDK_INT was added only in API level 4 (1.6). Is it possible to determine if phone has API level 3 (1.5) ?
A:
I would try to access that property via reflection, if it fails, you're in Android 1.5.
Chris Thompson
2010-07-01 04:58:39
A:
public static int getPlatformVersion() {
try {
Field verField = Class.forName("android.os.Build$VERSION")
.getField("SDK_INT");
int ver = verField.getInt(verField);
return ver;
} catch (Exception e) {
// android.os.Build$VERSION is not there on Cupcake
return 3;
}
}
alex
2010-07-01 05:00:25
+2
A:
You can use Build.VERSION.SDK which returns a String and is available on all versions of Android prior to 1.6. It is marked as deprecated so you should use reflection to ensure that your app doesn't encounter problems on future versions of Android.
So, to ensure all versions < 1.6 are supported you could use a modified version of Alexs code;
public static int getPlatformVersion() {
try {
Field verField = Class.forName("android.os.Build$VERSION").getField("SDK_INT");
int ver = verField.getInt(verField);
return ver;
} catch (Exception e) {
try {
Field verField = Class.forName("android.os.Build$VERSION").getField("SDK");
String verString = (String) verField.get(verField);
return Integer.parseInt(verString);
} catch(Exception e) {
return -1;
}
}
}
Al Sutton
2010-07-01 07:34:10