未找到Android NDK方法…从C+;调用Java+; 我想从C++调用java方法。我遵循了我发现的其他示例,但我不断发现错误: GetMethodID: method not found: Lcom/test/ndk/GL2JNIActivity;.GetFiles:(L/java/lang/String;Ljava/lang/String;Z;)V

未找到Android NDK方法…从C+;调用Java+; 我想从C++调用java方法。我遵循了我发现的其他示例,但我不断发现错误: GetMethodID: method not found: Lcom/test/ndk/GL2JNIActivity;.GetFiles:(L/java/lang/String;Ljava/lang/String;Z;)V,java,android,c++,android-ndk,Java,Android,C++,Android Ndk,我做错了什么?我怀疑我的方法签名字符串对于env->GetMethodID()是错误的,但从我看到的其他示例来看,它似乎是正确的 C++: 爪哇: package com.test.ndk; 导入java.io.File; 公共类GL2JNIActivity扩展活动实现SensorEventListener{ 公共静态void GetFiles(字符串路径、字符串掩码、布尔目录) { 字符串路径=Environment.getExternalStorageDirectory().toString

我做错了什么?我怀疑我的方法签名字符串对于env->GetMethodID()是错误的,但从我看到的其他示例来看,它似乎是正确的

C++:

爪哇:

package com.test.ndk;
导入java.io.File;
公共类GL2JNIActivity扩展活动实现SensorEventListener{
公共静态void GetFiles(字符串路径、字符串掩码、布尔目录)
{
字符串路径=Environment.getExternalStorageDirectory().toString()+sentPath;
Log.d(“文件”,“路径:”+Path);
文件f=新文件(路径);
File File[]=f.listFiles();
Log.d(“文件”,“大小:”+文件.length);
for(int i=0;i
您应该更换

jmethodID mid = env->GetMethodID(clazz, "GetFiles", "(Ljava/lang/String;Ljava/lang/String;Z;)V");


因为最后一个参数是一个布尔值,它不是一个完全限定类,而是一个基本类型签名,所以没有
是必需的。

天哪。。。我真不敢相信是这样。。哈哈。谢谢如果你把它作为一个答案,我可以给你信用。
package com.test.ndk;

import java.io.File;

public class GL2JNIActivity extends Activity implements SensorEventListener {

public static void GetFiles(String sentPath, String mask, boolean directory)
{
    String path = Environment.getExternalStorageDirectory().toString()+sentPath;
    Log.d("Files", "Path: " + path);
    File f = new File(path);
    File file[] = f.listFiles();
    Log.d("Files", "Size: "+ file.length);
    for (int i=0; i < file.length; i++)
    {
        Log.d("Files", "FileName:" + file[i].getName());
        GL2JNILib.AddFileToList(file[i].getName(), file[i].isDirectory());
    }
}
}
jmethodID mid = env->GetMethodID(clazz, "GetFiles", "(Ljava/lang/String;Ljava/lang/String;Z;)V");
jmethodID mid = env->GetMethodID(clazz, "GetFiles", "(Ljava/lang/String;Ljava/lang/String;Z)V");