Для того, чтобы получить ссылку на Java метод, нужно знать его сигнатуру. Есть два стула способа:
1. Подобрать сигнатуру по таблице:
| Сигнатура | Java тип |
|---|---|
| V | void |
| Z | boolean |
| B | byte |
| C | char |
| S | short |
| I | int |
| J | long |
| F | float |
| D | double |
| L fully-qualified-class ; | fully-qualified-class |
| [ type | type[] |
| ( arg-types ) ret-type | method type |
2. Получить сигнатуру через javap
%JAVA_HOME%/bin/javap -classpath "your.jar" -s com.myproject.YourClass
Пример:
Для метода:
public static void runTask(Runnable runnable) {
runnable.run();
}
Сигнатура будет: runTask(Ljava/lang/Runnable;)V — принимает объект класса java.lang.Runnable и возвращает void.
Для встроенных классов (например android.os.Handler) ищите .jar в Android_SDK.
Совет:
Для С++ удобнее использовать библиотеку jnipp вместо jni.h
P.S. Информации подобного рода в интернете — полно, писал исключительно для себя, чтобы каждый раз не искать.