如何使用Android NDK调用空隙方法

发布于 2025-01-23 17:31:27 字数 708 浏览 1 评论 0原文

我正在尝试从我的C ++代码中调用空隙方法。我已经有 jclass 和jnienv*。我毫无疑问地调用静态方法,因为我可以简单地使用我拥有的 jclass 实例。但是,使用 env-> callVoidMethod(),我读到我需要通过一个对象。该方法是我的主动脉类别的一部分,那么我需要创建一个主动级类的实例,如下面附带的调试屏幕截图中所示?如果是这样,如何获得MainAttivity的构造方法ID?

------------------------------------------------------------------------------------------------------

jclass clazz = env->FindClass((MenuUtilities::getPathFromPackage() + "/MainActivity").c_str());
jmethodID constructor = env->GetMethodID(clazz, "MainActivity", "()V"); //
              

I'm trying to call a void method from my C++ code. I already have jclass, and JNIEnv*. I have no problem calling static methods, because I can simply use the jclass instance that I have. However, Using env->CallVoidMethod(), I read that I need to pass an object instead. The method is a part of my MainActivity class, so do I need to create an instance of the MainActivity class as seen in the debugging screenshot attached below? If so, how do I get the constructor Method ID for MainActivity?

Debugging

-------------UPDATE code shown below-------------

jclass clazz = env->FindClass((MenuUtilities::getPathFromPackage() + "/MainActivity").c_str());
jmethodID constructor = env->GetMethodID(clazz, "MainActivity", "()V"); //????This returns null..
jobject newObj = env->NewObject(clazz, constructor);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文