gpt4 book ai didi

android - CallIntMethod 结果 -1 - ANDROID JNI

转载 作者:行者123 更新时间:2023-11-30 04:20:59 25 4
gpt4 key购买 nike

我想使用 C 中的 ANDROID SharedPreferences。为了更容易使用,我有一个类和一些方法(getIniParamInt、getIniParamString 等)。这些东西在 JAVA 中运行良好。

问题是,如果我从 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 调用有什么问题吗?谢谢!

最佳答案

嗯...我找到了解决方案!问题是,在 Java 代码中:它必须将调用的方法声明为私有(private)方法而不是公共(public)方法!!!

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

我是初学者,所以我不知道真正的解释......我只是试了一下。我希望它对想要使用这种方法的人有所帮助。

关于android - CallIntMethod 结果 -1 - ANDROID JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com