1.获取上下文
jobject getApplication(JNIEnv *env) {
jobject application = nullptr;
jclass activity_thread_clz = env->FindClass("android/app/ActivityThread");
if (activity_thread_clz != nullptr) {
jmethodID currentApplication = env->GetStaticMethodID(
activity_thread_clz, "currentApplication", "()Landroid/app/Application;");
if (currentApplication != nullptr) {
application = env->CallStaticObjectMethod(activity_thread_clz, currentApplication);
} else {
printf("Cannot find method: currentApplication() in ActivityThread.");
}
env->DeleteLocalRef(activity_thread_clz);
} else {
printf("Cannot find class: android.app.ActivityThread");
}
return application;
}
2.弹出toast
QAndroidJniObject javaString = QAndroidJniObject::fromString("test toast");
QAndroidJniObject toast = QAndroidJniObject::callStaticObjectMethod("android/widget/Toast", "makeText",
"(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;",
getApplication(env),
javaString.object(),
jint(1));
toast.callMethod<void>("show");
https://blog.csdn.net/lgl1170860350/article/details/51006595
https://schlining.medium.com/a-simple-java-native-interface-jni-example-in-java-and-scala-68fdafe76f5f
网友评论