简体   繁体   English

如何使用jni从c中的Java替换字符串数组的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM