我正在使用 jni,我可以从 c++ 类中调用常规活动中的 java 函数,但是当我尝试在非活动类中调用 java 函数时,我的代码不起作用。
我是说
jclass activityclass = env->FindClass("com/example/test/MyActivity);
jmethodID methodID = env->GetMethodID(activityclass,"FunctionName","()V");
env ->CallVoidMethod(obj,methodID);
这行得通。当我尝试从非活动常规 java 类中调用相同的函数(具有相同的名称)时,它不起作用。
jclass regularclass = env->FindClass("com/example/test/MyRegularClass);
jmethodID methodID = env->GetMethodID(regularclass ,"FunctionName","()V");
env ->CallVoidMethod(obj,methodID);
为什么我不能在非活动类中调用函数?我的错误是什么?
我的常规课程
public class MyRegularClass{
public static void FunctionName(){
Log.i("Java Worked","Java Worked");
}
}
我的活动课程
public class MyActivity{
system.load.library("mylib");
@Override
public void onCreate(Bundle savedInstanceState){
....
....
testJNI();
}
public static void FunctionName(){
Log.i("Activity Worked","Activity Worked");
}
public native void testJNI();
}