Maison > développement back-end > C++ > Comment appeler correctement les méthodes Java à partir de C sous Android à l'aide de JNI ?

Comment appeler correctement les méthodes Java à partir de C sous Android à l'aide de JNI ?

Barbara Streisand
Libérer: 2024-11-04 08:57:02
original
980 Les gens l'ont consulté

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

Appel de méthodes Java depuis C sous Android

Dans le contexte de Java Native Interface (JNI) sous Android, il est possible d'invoquer Java méthodes à partir du code C lors de l’exécution d’une méthode native appelée depuis Java. Voici une analyse détaillée d'un extrait de code que vous avez fourni, mettant en évidence le problème et proposant une solution :

Problème :
Votre code natif tente d'appeler la méthode "messageMe" à partir du Classe "the/package/MainActivity" utilisant la fonction "CallObjectMethod". Cependant, le message d'erreur "java.lang.NoSuchMethodError: messageMe" indique que la méthode n'est pas trouvée.

Analyse :
Le problème réside dans la façon dont vous transmettez l'objet à la fonction "CallObjectMethod". Dans votre code, vous transmettez l'objet "jstr", qui est une chaîne Java, au lieu de l'objet "obj", qui est l'instance de la classe MainActivity.

Solution :
Pour appeler des méthodes objet depuis C , vous devez transmettre l'objet lui-même à la fonction "CallObjectMethod". Le code corrigé ci-dessous montre la modification :

<code class="c++">jobject result = env->CallObjectMethod(obj, messageMe, jstr);</code>
Copier après la connexion

Notes supplémentaires :

  • Si votre méthode Java est une méthode void, comme dans votre cas, vous devrait utiliser "CallVoidMethod" au lieu de "CallObjectMethod" dans votre code C.
  • Si vous devez renvoyer un résultat de votre méthode Java, vous devrez également modifier la signature JNI dans votre fichier d'en-tête et le type de retour dans votre code Java.

En résolvant le problème décrit ci-dessus, vous devriez pouvoir appeler avec succès des méthodes Java à partir de C dans votre application Android.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal