从JNI调用webview方法

时间:2015-03-06 12:50:05

标签: android java-native-interface android-webview

我将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方面?

1 个答案:

答案 0 :(得分:1)

您必须使用CallBack机制将命令+数据从c / c ++发送到java类。 存在许多教程,您也可以在stackoverflow上搜索。

例如: How to create callbacks between android code and native code?