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

Barbara Streisand
Lepaskan: 2024-11-04 08:57:02
asal
806 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!