C和JNI arraylist

时间:2011-12-02 11:25:54

标签: java android c java-native-interface

        jobjectArray ret;
        int i;

        char *data = malloc(3 * sizeof(char *));

        if(data != NULL)  {
            data[0] = "11";
            data[1] = "22";
            data[2] = "33";
        }
        data = realloc(data, 4 * sizeof(char *));
        if(data != NULL)  {
          data[3] = "44";
        }

        jsize len=4;

            ret= (jobjectArray)(*env)->NewObjectArray(env, len,(*env)->FindClass(env, "java/lang/String"),(*env)->NewStringUTF(env, ""));
        LOGE("startxx");

        jstring      str;
            for(i=0;i<len;i++) {
                str = (*env)->NewStringUTF(env, data[i] );
                (*env)->SetObjectArrayElement(env, ret, i, str);
            }

        LOGE("startxxx");

        free(data);
        return(ret);

我想在c中创建一个arraylist,然后从中创建一个java jni数组,如何从此代码返回正确的“11”,“22”,“33”,“44”数组?

警告:

data [0] =“11”;:警告:赋值从没有强制转换的指针生成整数

str =(* env) - &gt; NewStringUTF(env,data [i]);:警告:传递参数2'(* env) - &gt; NewStringUTF'使整数指针没有演员

1 个答案:

答案 0 :(得分:2)

数据声明不正确。它应该是char **而不是char *。