私はMonoDroidを使用しており、WebViewからC#コードを呼び出し可能にしたいと考えています。MonoDroidでwebView.AddJavascriptInterfaceを使用する
JavaScriptでprotected override void OnCreate(Bundle bundle)
{
[...]
LinearLayout layout = FindViewById<LinearLayout>(Resource.Id.MyLayout);
var webView = new WebView(this);
webView.SetWebChromeClient(new WebChromeClient());
webView.Settings.JavaScriptEnabled = true;
webView.AddJavascriptInterface(new JSAccesibleObject(), "cSharpObject");
webView.LoadUrl("file:///android_asset/test.html");
layout.AddView(webView);
}
public class JSAccesibleObject : Java.Lang.Object
{
public void method1()
{
}
}
、cSharpObjectが定義されているが、それはプロパティがありません:
私はこの(C#)をやっています。
alert(cSharpObject); //[email protected]
for (var prop in cSharpObject)
alert(prop); //this never gets called
alert(cSharpObject.method1) //undefined
alert(cSharpObject.method1()) //fails
私が何か間違ったことをやっている、またはこれは単にMonoDroidでは動作しませんか?
ここで、Javaオブジェクトのインスタンス化に関する情報を入手しましたか?実際には「新しいJSAccesibleObject()」を実行するだけで十分です。彼が見逃していたのは、メソッドの[Export]属性だけでした... –