gpt4 book ai didi

android - 在 JNI 中获取字符串列表的正确方法

转载 作者:行者123 更新时间:2023-11-30 01:53:29 25 4
gpt4 key购买 nike

我在 C 语言中有一个 JNI 函数,它在代表目录列表的 Java FILE 类中传递。我想调用 list() 函数并获取字符串列表(目录中的文件)。执行此操作的最佳方法是什么?

现在我有

static void* my_function(JNIEnv *env, jobject obj, jobject dir){
jarray listRet;
jclass cls = (*env)->GetObjectClass(env, dir);
jmethodID method = (*env)->GetMethodID(env, cls, "list", "()[Ljava/lang/String");
listRet = (*env)->CallObjectMethod(env, cls, method);

jsize stringCount = (*env)->GetArrayLength(env, listRet);
}

但是,通过添加日志记录语句,它似乎永远不会通过 GetObjectClass 调用。那么,这个调用是否正确?此外,GetMethodID 调用是否正确? list() 的返回类型是 (java) String[]。我还有什么地方出错了吗?

最佳答案

list 不是 File 的静态方法。也就是说,它属于 File 的实例(在您的情况下为 dir),而不属于 File 类。

所以代替:

listRet = (*env)->CallObjectMethod(env, cls, method);

你应该使用:

listRet = (*env)->CallObjectMethod(env, dir, method);

此外,您似乎在 list 的签名中缺少一个分号。应该是 "()[Ljava/lang/String;"

关于android - 在 JNI 中获取字符串列表的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632527/

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