- jint JNI_OnLoad(JavaVM* vm, void* reserved)
-
{
-
UnionJNIEnvToVoid uenv;
-
uenv.venv = NULL;
-
jint result = -1;
-
JNIEnv* env = NULL;
-
-
LOGI("JNI_OnLoad");
-
-
setJavaVM(vm);
-
-
if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) {
-
LOGE("ERROR: GetEnv failed");
-
goto bail;
-
}
-
env = uenv.env;
-
-
if (registerNatives(env) != JNI_TRUE) {
-
LOGE("ERROR: registerNatives failed");
-
goto bail;
-
}
-
result = JNI_VERSION_1_4;
-
-
bail:
-
return result;
-
}
static const char *classPathName = "com/example/android/simplejni/Native";
static int registerNatives(JNIEnv* env)
{
if (!registerNativeMethods(env, classPathName,
methods, sizeof(methods) / sizeof(methods[0]))) {
return JNI_FALSE;
}
return JNI_TRUE;
}
/*
* Register several native methods for one class.
*/
static int registerNativeMethods(JNIEnv* env, const char* className,
JNINativeMethod* gMethods, int numMethods)
{
jclass clazz;
clazz = env->FindClass(className);
if (clazz == NULL) {
LOGE("Native registration unable to find class '%s'", className);
return JNI_FALSE;
}
if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) {
LOGE("RegisterNatives failed for '%s'", className);
return JNI_FALSE;
}
return JNI_TRUE;
}