首頁  >  文章  >  後端開發  >  如何在 Android 中使用 JNI 正確從 C 呼叫 Java 方法?

如何在 Android 中使用 JNI 正確從 C 呼叫 Java 方法?

Barbara Streisand
Barbara Streisand原創
2024-11-04 08:57:02807瀏覽

How To Correctly Call Java Methods From C   in Android Using JNI?

在Android 中從C 呼叫Java 方法

在Android 中的Java 本機介面(JNI) 上下文中,可以呼叫Java在上下文中執行從Java 呼叫的本機方法期間從C 程式碼中取得方法。以下是您提供的程式碼片段的詳細分析,突出顯示了問題並提供了解決方案:

問題:
您的本機程式碼正在嘗試從「/package /MainActivity」類別使用「CallObjectMethod」函數。但是,錯誤訊息「java.lang.NoSuchMethodError: messageMe」表示找不到該方法。

分析:
問題在於您傳遞物件的方式到「CallObjectMethod」函數。在您的程式碼中,您傳遞的是 Java 字串「jstr」對象,而不是 MainActivity 類別的實例「obj」物件。

解決方案:
要從 C 呼叫物件方法,您需要將物件本身傳遞給「CallObjectMethod」函數。下面更正後的程式碼顯示了修改:

<code class="c++">jobject result = env->CallObjectMethod(obj, messageMe, jstr);</code>

附加說明:

  • 如果您的Java 方法是void 方法,如您的情況,您應在C 程式碼中使用“CallVoidMethod”而不是“CallObjectMethod”。
  • 如果您需要從下列位置傳回結果您的 Java 方法,您還需要修改頭檔中的 JNI 簽章以及 Java 程式碼中的回傳類型。

透過解決上述問題,您應該能夠成功呼叫 Java Android 應用程式中來自 C 的方法。

以上是如何在 Android 中使用 JNI 正確從 C 呼叫 Java 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn