Monodroid的JavaScript接口 [英] Monodroid JavaScript Interface

查看:116
本文介绍了Monodroid的JavaScript接口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Monodroid还没有原生支持JavaScriptInterface用的WebView。

我正在寻找一个例子,可以用此替代方法可用于.java文件。

  IntPtr的JavaScriptInterface_Class = JNIEnv.FindClass(下称/包/为/ JavaScriptInterface);
IntPtr的JavaScriptInterface_ctor = JNIEnv.GetMethodID(JavaScriptInterface_Class,&其中;初始化>中,()V);
IntPtr的实例= JNIEnv.NewObject(JavaScriptInterface_Class,JavaScriptInterface_ctor);

appView.AddJavascriptInterface(新的java.lang.Object(实例),机器人);
 

解决方案

您可以使用自定义的.java 如:

  // TODO:用一个实际有效的软件包名称。 :-)
包the.package.for;

公共类JavaScriptInterface {
    //该JNI在原来的问题采用的是默认的构造函数。
    //无论是提供我们明确地或使用隐式单...
    公共JavaScriptInterface()
    {
    }

    // TODO:将您从此处的JavaScript希望可调用的任何方法。
}
 

不要忘记设置生成操作为你的的.java 文件来为 AndroidJavaSource

Monodroid does not yet natively support JavaScriptInterface with WebView.

I'm looking for an example .java file that can be used with this workaround.

IntPtr JavaScriptInterface_Class = JNIEnv.FindClass ("the/package/for/JavaScriptInterface");
IntPtr JavaScriptInterface_ctor = JNIEnv.GetMethodID (JavaScriptInterface_Class, "<init>", "()V");
IntPtr instance = JNIEnv.NewObject (JavaScriptInterface_Class, JavaScriptInterface_ctor);

appView.AddJavascriptInterface (new Java.Lang.Object (instance), "Android");

解决方案

You could use a custom .java such as:

// TODO: use an actually valid package name. :-)
package the.package.for;

public class JavaScriptInterface {
    // The JNI in the original question uses a default constructor.
    // Either provide one explicitly or use the implicit one...
    public JavaScriptInterface ()
    {
    }

    // TODO: add any methods you want invokable from JavaScript here.
}

Don't forget to set the Build action for your .java file to to AndroidJavaSource.

这篇关于Monodroid的JavaScript接口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆