我将WebView子类化,并在该调用中添加了一个本机方法,该方法实现为:
JNIEXPORT jboolean JNICALL Java_com_mypackage_openUrl(
JNIEnv* env, jobject webView, jstring url) {
LOGI("openUrl");
jclass webViewClass = env->GetObjectClass(webView);
if (!webViewClass) {
LOGE("webView class not found");
return false;
}
jmethodID method = env->GetMethodID(webViewClass, "loadUrl",
"(Ljava/lang/String;)V");
env->CallObjectMethod(webViewClass, method, url);
}
但它不起作用,应用程序会崩溃,我知道必须从UI(主)线程调用WebView方法,但我仍然需要了解这是否可能来自JNI方面?
答案 0 :(得分:1)
您必须使用CallBack机制将命令+数据从c / c ++发送到java类。 存在许多教程,您也可以在stackoverflow上搜索。
例如: How to create callbacks between android code and native code?