android: Added a global variable to check the current SDK version

This commit is contained in:
Tobias Brunner 2012-09-24 16:54:38 +02:00
parent 2e2feffb67
commit dfefa2f6dc
2 changed files with 26 additions and 1 deletions

View File

@ -27,6 +27,7 @@ static JavaVM *android_jvm;
jclass *android_charonvpnservice_class;
jclass *android_charonvpnservice_builder_class;
android_sdk_version_t android_sdk_version;
/**
* Thread-local variable. Only used because of the destructor
@ -75,7 +76,9 @@ void androidjni_detach_thread()
*/
jint JNI_OnLoad(JavaVM *vm, void *reserved)
{
JNIEnv *env;
JNIEnv *env;
jclass jversion;
jfieldID jsdk_int;
android_jvm = vm;
@ -93,6 +96,10 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved)
(*env)->NewGlobalRef(env, (*env)->FindClass(env,
JNI_PACKAGE_STRING "/CharonVpnService$BuilderAdapter"));
jversion = (*env)->FindClass(env, "android/os/Build$VERSION");
jsdk_int = (*env)->GetStaticFieldID(env, jversion, "SDK_INT", "I");
android_sdk_version = (*env)->GetStaticIntField(env, jversion, jsdk_int);
return JNI_VERSION_1_6;
}

View File

@ -45,6 +45,24 @@
extern jclass *android_charonvpnservice_class;
extern jclass *android_charonvpnservice_builder_class;
/**
* Currently known (supported) SDK versions
*
* see android.os.Build.VERSION_CODES for definitions
*/
typedef enum {
ANDROID_ICE_CREAM_SANDWICH = 14,
ANDROID_ICE_CREAM_SANDWICH_MR1 = 15,
ANDROID_JELLY_BEAN = 16,
} android_sdk_version_t;
/**
* The current SDK version of the Android framework
*
* see android.os.Build.VERSION.SDK_INT
*/
extern android_sdk_version_t android_sdk_version;
/**
* Attach the current thread to the JVM
*