1. 测试方法
//初始化View
private void initView() {
binding.btnCallToast.setOnClickListener(view -> {
CallbackShowToast("Hello Java");
});
}
//调用这个方法
public native void CallbackShowToast(String str);
public void showToast(String str) {
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}
2. C调用函数
/*
* Class: com_example_demo05_Jni
* Method: CallbackShowToast
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_example_demo05_MainActivity_CallbackShowToast
(JNIEnv *env, jobject thiz, jstring str){
//1.找到字节码
jclass clazz = env->FindClass("com/example/demo05/MainActivity");
//2.找到方法
jmethodID methodId = env->GetMethodID(clazz, "showToast", "(Ljava/lang/String;)V");
//3.创建一个对象
//jobject obj = env->AllocObject(clazz);
//4.通过对象调用方法 env->NewStringUTF("Hello Java.");
env->CallVoidMethod(thiz, methodId, str);
}
|