android JNI:app停止工作

时间:2017-03-07 17:39:43

标签: java android c android-ndk java-native-interface

我是Android编程的新手,我认为应用停止工作的原因在于 - >我想将 JNI(在c)中的char数组返回到android( java

     for(int c=0;c<length;c++) {
        for (int k = 0; k < 36; k++) {
            if (a[c] == string2[j]) {
                S[c]=string2[j];
            }
        }
    }
    (*env)->ReleaseStringUTFChars(env, jstring1, str);
    return (*env)->NewStringUTF(env,S);

并在java中:

 public native String HelloWorld(String stri);

因为我想把输出放在 TextView

 t3.setText(HelloWorld(str));

该程序在模拟器上运行,但是一旦我在EditText中输入内容并按下一个按钮,它就会停止响应然后关闭。

1 个答案:

答案 0 :(得分:1)

也许这只是一个错字,但我认为你必须使用k作为第二个循环中的索引。

你有:

for(int c=0;c<length;c++) {
    for (int k = 0; k < 36; k++) {
        if (a[c] == string2[j]) {
            S[c]=string2[j];
        }
    }
}
(*env)->ReleaseStringUTFChars(env, jstring1, str);
return (*env)->NewStringUTF(env,S);

它应该是:

for(int c=0;c<length;c++) {
    for (int k = 0; k < 36; k++) {
        if (a[c] == string2[k]) {
            S[c]=string2[k];
        }
    }
}
(*env)->ReleaseStringUTFChars(env, jstring1, str);
return (*env)->NewStringUTF(env,S);

注意内循环内部的变化。