ホームページ  >  記事  >  バックエンド開発  >  JNIを使​​用してAndroidのCからJavaメソッドを正しく呼び出す方法は?

JNIを使​​用してAndroidのCからJavaメソッドを正しく呼び出す方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 08:57:02806ブラウズ

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

Android の C から Java メソッドを呼び出す

Android の Java Native Interface (JNI) のコンテキストでは、Java を呼び出すことができますJava から呼び出されるネイティブ メソッドの実行中に C コードからメソッドを呼び出します。以下は、提供されたコード スニペットの詳細な分析で、問題を強調表示し、解決策を提供します:

問題:
ネイティブ コードが、 「CallObjectMethod」関数を使用する「the/package/MainActivity」クラス。ただし、エラー メッセージ「java.lang.NoSuchMethodError: messageMe」は、メソッドが見つからないことを示しています。

分析:
問題は、オブジェクトを渡す方法にあります。 「CallObjectMethod」関数に。コードでは、MainActivity クラスのインスタンスである「obj」オブジェクトではなく、Java 文字列である「jstr」オブジェクトを渡しています。

解決策:
C からオブジェクトのメソッドを呼び出すには、オブジェクト自体を「CallObjectMethod」関数に渡す必要があります。以下の修正されたコードは、変更を示しています。

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

追加メモ:

  • あなたの場合のように、Java メソッドが void メソッドである場合、 C コードでは、「CallObjectMethod」の代わりに「CallVoidMethod」を使用する必要があります。
  • Java メソッドから結果を返す必要がある場合は、ヘッダー ファイルの JNI 署名と戻り値の型も変更する必要があります。

上記の問題に対処すると、Android アプリケーションで C から Java メソッドを正常に呼び出すことができるようになります。

以上がJNIを使​​用してAndroidのCからJavaメソッドを正しく呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。