1

我正在使用 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 失败。

任何帮助深表感谢!

4

1 回答 1

2

我正在回答我的问题:

发生这种情况是因为 getEnv 获取当前环境。虽然我需要通过以下方式获得新的环境:

if (currVM->AttachCurrentThread((void **)&currEnv, NULL)<0)
        {
            emit error("Cannot attach the current thread to the VM");
        }
于 2011-05-13T13:34:03.170 回答