JNI convierte jstring en char *

Pasé una cadena de URL de Java a código C como tipo de datos jstring mediante el uso de JNI. Y mi método de biblioteca necesita un char * como url.

¿Cómo puedo convertir jstring en char * ?

PD: ¿Hay alguna ventaja de usar jcharArray en C? (es decir, Pasando char [] lugar de cadena en el método nativo)

Aquí hay un par de enlaces útiles que encontré cuando comencé con JNI

http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html

con respecto a su problema, puede usar esto

 JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj, jstring javaString) { const char *nativeString = (*env)->GetStringUTFChars(env, javaString, 0); // use your string (*env)->ReleaseStringUTFChars(env, javaString, nativeString); } 

Gracias primero la respuesta de Jason Rogers.

En Android && cpp debería ser esto:

 const char *nativeString = env->GetStringUTFChars(javaString, JNI_FALSE); // use your string env->ReleaseStringUTFChars(javaString, nativeString); 

Puede corregir estos errores:

1.error: el operando base de ‘->’ tiene un tipo no puntero ‘JNIEnv {aka _JNIEnv}’

2.error: no hay función de coincidencia para la llamada a ‘_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)’

3.error: sin función de coincidencia para la llamada a ‘_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)’

4.add “env-> DeleteLocalRef (nativeString);” al final.