2012-02-12 4 views
1

C.에서 ANDROID SharedPreferences를 사용하고 싶습니다. 더 쉽게 사용할 수 있도록 클래스와 일부 메소드 (getIniParamInt, getIniParamString 등)가 있습니다. Java에서 문제없이 작동합니다. I는 JNI에서 메소드를 호출하는 경우는 다시 송신CallIntMethod 결과 -1 - ANDROID 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 코드에서 다음과 같습니다. 호출 된 메소드를 public 대신 private 메소드로 선언해야합니다!

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

저는 초보자이기 때문에 실제 설명을 모릅니다 ... 방금 시도했습니다. 이 방법을 사용하고자하는 사람들에게 도움이되기를 바랍니다.