JNI Warnig预期返回types'L'调用LocationManager.requestLocationUpdates

我正在使用Necessitas(QT在Android)。 基本上,使用Andrid NDK,android活动调用QT应用程序(.so)。

我正在为GPS定位一些绑定。 我想我到达那里,但是当我调用方法requestLocationUpdates(String,Long,Float,LocationListener)时,我得到一个JNI警告( JNI Warnig预期返回types'L' )。

以下是一些代码:

midGetSystemService = currEnv->GetMethodID(actClass,"getSystemService","(Ljava/lang/String;)Ljava/lang/Object;"); jSystemServiceObj = currEnv->CallObjectMethod(currAct,midGetSystemService,StringArg); midRequestLocationUpdates = currEnv->GetMethodID(locManClass,"requestLocationUpdates","(Ljava/lang/String;JFLandroid/location/LocationListener;)V"); midConstListener = currEnv->GetMethodID(listenerClass, "<init>", "()V"); jListenerObj = currEnv->NewObject(listenerClass, midConstListener); currEnv->CallObjectMethod(jSystemServiceObj,midRequestLocationUpdates,StringArg,(jlong)1000,(jfloat)10,jListenerObj); --->Here is the warning 

任何想法为什么?

Solutions Collecting From Web of "JNI Warnig预期返回types'L'调用LocationManager.requestLocationUpdates"

你正在调用返回“void”的方法:

 midConstListener = currEnv->GetMethodID(listenerClass, "<init>", "()V"); 

使用一个JNI调用,期望返回一个JNI对象:

 // BAD currEnv->CallObjectMethod(jSystemServiceObj,midRequestLocationUpdates,StringArg,(jlong)1000,(jfloat)10,jListenerObj); 

你应该使用JNI调用,它将返回void:

 // GOOD currEnv->CallVoidMethod(jSystemServiceObj,midRequestLocationUpdates,StringArg,(jlong)1000,(jfloat)10,jListenerObj);