Обратный вызов Monodroid Javascript

Я пытаюсь использовать monodroid с webkit для создания приложения. У меня возникла проблема с тем, чтобы html-страница вызывала метод javascript, который был бы интерфейсом для метода в моем приложении. На http://developer.android.com/guide/webapps/webview.htmlесть руководство по этому вопросу, как это сделать в java, но тот же код не работает на C#.

Этот обмен на вызов метода монодроида из примера javascriptсвязал несколько потоков об использовании JNI для решения проблемы с монодроидом и методом интерфейса javascript, но я не смог заставить его работать .

Теперь я пытаюсь использовать некоторые инструкции кода, но безуспешно:

// Java
class RunnableInvoker {
Runnable r;
public RunnableInvoker (Runnable r) {
this.r = r;
}
// must match the javascript name:
public void doSomething() {
r.run ();
}
}

From C#, you'd create a class that implements Java.Lang.IRunnable:

// C#
class SomeAction : Java.Lang.Object, Java.Lang.IRunnable {
Action a;
public void SomeAction(Action a) {this.a = a;}
public void Run () {a();}
}

Then to wire things up:

// The C# action to invoke
var action = new SomeAction(() => {/* ... */});

// Create the JavaScript bridge object:
IntPtr RunnableInvoker_Class = JNIEnv.FindClass("RunnableInvoker");
IntPtr RunnableInvoker_ctor = JNIEnv.GetMethodID (RunnableInvoker_Class, "", "(Ljava/lang/Runnable;)V");
IntPtr instance = JNIEnv.NewObject(RunnableInvoker_Class, RunnableInvoker_ctor, new JValue (action));

// Hook up WebView to JS object
web_view.AddJavascriptInterface (new Java.Lang.Object(instance, JniHandleOwnership.TransferLocalRef), "Android");

Предполагается, что этот код сможет сделать так, чтобы кто-то на html-странице внутри приложения мог щелкнуть кнопку, вызвать java, который затем вызовет C#. Это не сработало.

Мне было интересно, есть ли у кого-нибудь представление о том, в чем проблема, или другая идея, чтобы я мог использовать monodroid, чтобы кнопка html, загруженная в webkit, вызывала метод ac#, или чтобы мой код C# вызывал метод JavaScript.

8
задан Community 23 May 2017 в 12:02
поделиться