Xamarin Android comunicación bidireccional entre Javascript y C #
Estoy desarrollando una aplicación con Xamarin Android que tiene un WebView que muestra una página web. Quiero implementar una comunicación bidireccional entre Javascript desde WebView a c #. Podría llamar a C # desde Javascript usando estoenlazar. Sin embargo, no pude encontrar una manera de enviar datos de C # a Javascript. ¿Hay alguna manera de enviar datos de un lado a otro en este enfoque? Pensé que escribir una devolución de llamada en Javascript funcionaría, pero cómo activarlo desde el código C #.
Ahora, mi problema es cómo llamar a WebView desde una clase de interfaz de JavaScript. Tengo una clase de interfaz Javascript como se mencionóhttps://developer.xamarin.com/recipes/android/controls/webview/call_csharp_from_javascript/ ScannerAndroid de espacio de nombres {public class JSInterface: Java.Lang.Object {Context context; WebView webView;
public JSInterface (Context context, WebView webView1)
{
this.context = context;
this.webView = webView1;
}
[Export]
[JavascriptInterface]
public void ShowToast()
{
Toast.MakeText (context, "Hello from C#", ToastLength.Short).Show ();
this.webView.LoadUrl ("javascript:callback('Hello from Android Native');");
}
}
}
El código arroja una excepción en la línea LoadUrl. java.lang.Throwable: se llamó a un método WebView en el hilo 'Thread-891'. Todos los métodos de WebView deben invocarse en el mismo hilo. (Looper esperado Looper (main, tid 1) {42ce58a0} llamado nulo, FYI main Looper es Looper (main, tid 1) {42ce58a0})
Ahora estoy luchando sobre cómo referir WebView desde esta clase de interfaz de script Java