如何解决JNI 将 java base64 字符串传递给 C++ 并将 base64 字符串返回给 java
你好,我正在使用 JNI 构建一个 android 应用程序,我试图将一个 base64 字符串传递给 C++,然后返回一个 base64 字符串。我使用 javax.crypto.Cipher 库来加密 base64 字符串,并将该字符串发送到 c++,并在 c++ 中使用该字符串。但是由于某种原因,当我将该字符串传递给 JNI 时,它没有显示。我的代码片段如下..
Decimal('String')
解决方法
JNIENVInterface 公开一组函数表以检索从 JAVA 前端传递的参数。 https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html
在您的情况下,您需要使用 GetStringUTFChars() 从 Java 中读取 jstring -
//native-lib.cpp
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_mobileapp_NativeLibrary_request(JNIEnv *env,jobject
instance,jstring encStr)
{
char *utfString = (char *) (env)->GetStringUTFChars(encStr,NULL);
__android_log_print(ANDROID_LOG_DEBUG,"ENC_STRING = %s",utfString);
// .. do something
return env->NewStringUTF(utfString);//modified string returned
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。