Passei uma string de URL de Java para código C como jstring
tipo de dados por meio do uso de JNI. E meu método de biblioteca precisa de um char *
url como.
Como posso converter jstring
em char *
?
PS: Existe alguma vantagem em usar jcharArray em C? (ou seja, passagem em char []
vez de string no método nativo)
java
java-native-interface
Prasham
fonte
fonte
Respostas:
Aqui está um par de links úteis que encontrei quando comecei com JNI
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
em relação ao seu problema, você pode usar isso
fonte
nativeString
constante?const
por um motivo. A resposta correta para o seu problema éstrcpy
deconst char*
para achar*
. Isso deve fornecer a você o mutávelchar*
que você deseja.Obrigado pela resposta de Jason Rogers primeiro.
No Android && cpp deve ser este:
Pode corrigir esses erros:
1.erro: operando base de '->' tem tipo não-ponteiro 'JNIEnv {também conhecido como _JNIEnv}'
2.erro: nenhuma função correspondente para chamada para '_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)'
3.erro: nenhuma função correspondente para chamada para '_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)'
4.add "env-> DeleteLocalRef (nativeString);" no final.
fonte
(*env)->
se estiver usando C, não C ++.