[英]How to replace the values of string array from java in c using jni?
This is my jni function in which I have to replace the values inside the array passed from java. 这是我的jni函数,其中我必须替换从java传递的数组中的值。
Please tell me how to do it. 请告诉我该怎么做。
JNIEXPORT void JNICALL Java_com_example_finals_Strpass_intake
(JNIEnv *env, jobject obj, jobjectArray dev){
jfieldID myNamesID; /* store the field ID */
int i=0;
jstring myStr;
char* myStr2;
char* myNames[] = {"Hello "};
LOGI("before class call ");
// Get a reference to obj’s class
jclass cls = (*env)->GetObjectClass(env,obj);
LOGI("before id call ");
myNamesID = (*env)->GetStaticFieldID(env,cls, "myDevNames", "[Ljava/lang/String;");
// Get the object field
LOGI("before dev call ");
dev =(*env)->GetStaticObjectField(env,cls,myNamesID);
LOGI("before for loop call ");
for (i=0; i<1; i++) {
LOGI("before myStr ");
myStr = (*env)->NewStringUTF(env,"gk");
(*env)->SetObjectArrayElement(env,dev,i,myStr);
}
(*env)->ReleaseCharArrayElements(env, dev, myStr, 0);
LOGI("after release");
}
JNIEXPORT void JNICALL Java_com_example_contchar23914_CharArrClass_intake (JNIEnv *env, jobject job, jobjectArray ptr) { JNIEXPORT void JNICALL Java_com_example_contchar23914_CharArrClass_intake(JNIEnv * env,jobject job,jobjectArray ptr){
jclass cls = (*env)->GetObjectClass(env,job);
myNamesID = (*env)->GetStaticFieldID(env,cls, "arr", "[Ljava/lang/String;"); myNamesID =(* env)-> GetStaticFieldID(env,cls,“ arr”,“ [Ljava / lang / String;”);
ptr =(*env)->GetStaticObjectField(env,cls,myNamesID);
for (i=0; i < len; i++) {
stringg = (*env)->GetObjectArrayElement(env, ptr,i);
myStr = (*env)->NewStringUTF(env,myNames[i]);
(*env)->SetObjectArrayElement(env,ptr,i,myStr);
}
(*env)->ReleaseCharArrayElements(env, ptr, stringg, 0);
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.