2012-02-12 55 views
1

我想使用C的ANDROID SharedPreferences爲了更容易的使用,我有一個類和一些方法(getIniParamInt,getIniParamString等)。在JAVA中工作正常。CallIntMethod result -1 - ANDROID JNI

的問題是,如果我調用該方法從JNI它發送回-1至C的我的JAVA代碼 零件(簡化試驗,SharedPref除去等。):

public class IniManipulate { 
    public int getIniParamInt(String mezoNev) 
        {return 999;} // settings.getInt("abc", -9999); 

C代碼:

const char* paramOut 
paramOut = "abc"; 
jmethodID mid = (*env)->GetMethodID(env,cls1,"getIniParamInt","(Ljava/lang/String;)I"); 
    if (mid == NULL) {cDebug1 = 888;return; } 
jstring* parameter = (*env)->NewStringUTF(env, paramOut); 
    if (parameter == NULL) {return;} 
jint paramInt = (jint) (*env)->CallIntMethod(env,thiz, mid, parameter); 
cDebug1 = (int)paramInt; 

總是以paramInt = -1返回;而不是999;

我已經挖掘了整個網絡,我找不到解決方案。 你能幫我嗎,CallIntMethod調用有什麼問題? 謝謝!

回答

1

嗯...我找到了解決方案! 問題是,在Java代碼中: 它必須將被調用的方法聲明爲私有方法而不是公共的!

private int getIniParamInt(String mezoNev) 
       {return 999;} 

我是初學者,所以我不知道真正的解釋......我只是試了一下。 我希望對那些想要使用這種方法的人有幫助。

相關問題