Возможно кому-нибудь будет интересно, но я разобрался в проблеме.
Оказалось, что я не очень дружу с указателями в си, в качестве аргумента нужно было передавать не просто указатель на jnienv, а указатель на указатель, но и это не совсем заработало, поэтому я внутрь метода GetJniEnvAndAttach, добавил локальную переменную localenv* Jnienv; которую и использовал дальше внутри функции, а перед возвратом из функции присваивал указателю переданному в аргументе: &jnienv = localenv;
boolean GetJniEnvAndAttach(JNIEnv **jniEnv){
JNIEnv *localEnv = NULL;
if (javaVM->GetEnv((void **) &localEnv, JNI_VERSION_1_6) == JNI_EDETACHED){
if (javaVM->AttachCurrentThread(&localEnv,0) == JNI_OK){
*jniEnv = localEnv;
LOGI("Thread attach to JVM");
return true;
}
} else {
*jniEnv = localEnv;
LOGI("Thread wasn`t attach");
return false;
}
return false;
}