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
867 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!

source:php.cn
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