Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Untuk Memanggil Kaedah Java Dengan Betul Dari C dalam Android Menggunakan JNI?

Bagaimana Untuk Memanggil Kaedah Java Dengan Betul Dari C dalam Android Menggunakan JNI?

Barbara Streisand
Barbara Streisandasal
2024-11-04 08:57:02807semak imbas

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

Memanggil Kaedah Java daripada C dalam Android

Dalam konteks Java Native Interface (JNI) dalam Android, adalah mungkin untuk menggunakan Java kaedah daripada kod C semasa pelaksanaan kaedah asli yang dipanggil dari Java. Berikut ialah analisis terperinci bagi coretan kod yang anda berikan, menyerlahkan isu dan menyediakan penyelesaian:

Masalah:
Kod asli anda sedang cuba memanggil kaedah "messageMe" daripada kelas "the/package/MainActivity" menggunakan fungsi "CallObjectMethod". Walau bagaimanapun, mesej ralat "java.lang.NoSuchMethodError: messageMe" menunjukkan bahawa kaedah itu tidak dijumpai.

Analisis:
Isunya terletak pada cara anda menghantar objek kepada fungsi "CallObjectMethod". Dalam kod anda, anda menghantar objek "jstr", yang merupakan rentetan Java, bukannya objek "obj", yang merupakan contoh kelas MainActivity.

Penyelesaian:
Untuk memanggil kaedah objek daripada C , anda perlu menghantar objek itu sendiri ke fungsi "CallObjectMethod". Kod yang diperbetulkan di bawah menunjukkan pengubahsuaian:

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

Nota Tambahan:

  • Jika kaedah Java anda ialah kaedah yang tidak sah, seperti dalam kes anda, anda harus menggunakan "CallVoidMethod" dan bukannya "CallObjectMethod" dalam kod C anda.
  • Jika anda perlu mengembalikan hasil daripada kaedah Java anda, anda juga perlu mengubah suai tandatangan JNI dalam fail pengepala anda dan jenis pulangan dalam kod Java anda.

Dengan menangani isu yang diterangkan di atas, anda sepatutnya berjaya memanggil kaedah Java daripada C dalam aplikasi Android anda.

Atas ialah kandungan terperinci Bagaimana Untuk Memanggil Kaedah Java Dengan Betul Dari C dalam Android Menggunakan JNI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn