问题
I am looking for an example of how to call a monodroid method (C#) from javascript, using a webview.
Something like:
javascript:
<a href="#" onclick="window.android.callAndroid('Hello from Browser')"> 
   Call Android from JavaScript</a>
C#
public class LocalBrowser extends Activity {
...
   private class MyClass {
      public void callAndroid(final String arg) { 
               textView.setText(arg);
      }
   }
  }
Thanks
回答1:
This is the example I used to finally solve this for me. Better late than never.
Pay close attention to the decoration of the function and be sure to include Mono.Android.Export in your references.
https://github.com/xamarin/monodroid-samples/blob/master/WebViewJavaScriptInterface/WebViewJavaScriptInterface/JavaScriptInterfaceActivity.cs
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Webkit;
using Java.Interop;
namespace WebViewJavaScriptInterface
{
[Activity (Label = "Mono WebView ScriptInterface", MainLauncher = true)]
public class JavaScriptInterfaceActivity : Activity
{
    const string html = @"
<html>
<body>
<p>This is a paragraph.</p>
<button type=""button"" onClick=""Foo.bar('test message')"">Click Me!</button>
</body>
</html>";
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        // Set our view from the "main" layout resource
        SetContentView (Resource.Layout.Main);
        WebView view = FindViewById<WebView> (Resource.Id.web);
        view.Settings.JavaScriptEnabled = true;
        view.SetWebChromeClient (new WebChromeClient ());
        view.AddJavascriptInterface (new Foo (this), "Foo");
        view.LoadData (html, "text/html", null);
    }
}
class Foo : Java.Lang.Object
{
    public Foo (Context context)
    {
        this.context = context;
    }
    public Foo (IntPtr handle, JniHandleOwnership transfer)
        : base (handle, transfer)
    {
    }
    Context context;
    [Export ("bar")]
    // to become consistent with Java/JS interop convention, the argument cannot be System.String.
    public void Bar (Java.Lang.String message)
    {
        Console.WriteLine ("Foo.Bar invoked!");
        Toast.MakeText (context, "This is a Toast from C#! " + message, ToastLength.Short).Show ();
    }
}
}
    来源:https://stackoverflow.com/questions/9402531/call-monodroid-method-from-javascript-example