I'm going to use JNI to implement C++ native function that receives two string arrays, concatenate them into one string array, and return the big string array. Actually, I'm going to extend THIS to string arrays. How can I complete the following codes?
Java side code:
String [] strarrayA={"abc", "def"}, strarrayB = {"123","456"};
String[] strarrayC = strarrayFromJNI(strarrayA, strarrayB);
public native String[] strarrayFromJNI(String[] first, String[] second);
Native side code:
jarray
Java_com_androidMexample_MainActivity_strarrayFromJNI(
JNIEnv *env, jobject /* this */, jarray a, jarray b){
jsize alen = env->GetArrayLength(a);
jsize blen = env->GetArrayLength(b);
...
(How can I concatenate a and b to obtain c, result <- a, b ?)
return c;
}
How can I obtain the returned string array with strarrayC = {"abc", "def", "123", "456"}? Thanks in advance.
If you absolutely have to, it could go like this:
jobjectArray ab = env->NewObjectArray(alen+blen, env->FindClass("java/lang/String"), 0);
jsize i;
for(i=0;i<alen;i++)
env->SetObjectArrayElement(ab, i, env->GetObjectArrayElement(a, i));
for(i=0;i<blen;i++)
env->SetObjectArrayElement(ab, alen+i, env->GetObjectArrayElement(b, i));
But you could do the same in Java. It won't be noticeably slower, but much easier to read and understand.