我正在使用Necessitas(Qt for Android)。一切顺利。
现在,我正在尝试连接到Dalvik JVM以使用一些Android API(例如GPS)。为此,我试图使用JNI获取Java环境:
JNIEnv *currEnv;
currEnv = 0;
if (m_javaVM->GetEnv((void**)&currEnv,JNI_VERSION_1_4) == JNI_OK)
{
qDebug() << "GetEnv passed";
}
else
{
qDebug() << "GetEnv failed";
}
m_javaVM
是指向Necessitas使用的虚拟机的指针。
问题是当我在android虚拟设备中运行应用程序时,总是让GetEnv失败。
非常感谢任何帮助!
答案 0 :(得分:2)
我正在回答我的问题:
这是因为getEnv获取当前的env。虽然我需要获得一个新的环境,如:
if (currVM->AttachCurrentThread((void **)&currEnv, NULL)<0)
{
emit error("Cannot attach the current thread to the VM");
}