Xamarin WebView - 调用C#方法

时间:2016-06-20 19:46:24

标签: xamarin webview

Xamarin的WebView中是否有一种方法允许我将javascript事件附加到我的html元素并调用C#方法。

我可以使用JavaScriptInterface

在Android中轻松完成此操作
<video width="320" height="240" controls="controls" poster='poster.gif'
       onclick="window.JSInterface.startVideo('file:///sdcard/test.3gp');"

我将如何在Xamarin中实现这一目标

1 个答案:

答案 0 :(得分:1)

  

创建JavaScript接口类

     

创建一个C#类,其中包含要从JavaScript调用的方法。   如果您要定位Android API等级17或更高版本,请执行此操作   JavaScript-to-C#接口类必须注释每个   使用[JavascriptInterface][Export]的JavaScript可调用方法   如下例所示。如果您要定位Android API   等级16或更早,此接口类必须实现   Java.Lang.IRunnable中解释Java.Lang.Object.(本文后面的内容):

     
      
  • 创建一个派生自MyJSInterface的C#类在以下示例中,我们将类命名为JavaScript并实现   从 public class MyJSInterface : Java.Lang.Object { Context context; public MyJSInterface (Context context) { this.context = context; } public void ShowToast () { Toast.MakeText (context, "Hello from C#", ToastLength.Short).Show (); } } 调用toast时显示toast的方法:

    [Export]
  •   
  • 使用[JavascriptInterface]JavascriptInterface注释要向JavaScript公开的每个方法(请参阅Android API Level 16 and Earlier   有关ShowToast注释的更多信息,请参阅。在   在下面的示例中,Java.Interop方法被注释以便它   可以从JavaScript调用。请注意,您必须包括   Android.Webkitusing Java.Interop; using Android.Webkit; ... [Export] [JavascriptInterface] public void ShowToast () { Toast.MakeText(context, "Hello from C#", ToastLength.Short).Show(); } 使用如下所示的语句   例如:

    [Export]
  •   
  • 添加项目引用 Mono.Android.Export (这样您就可以使用Mono.Android.Export注释):

         

    1.在Visual Studio中,右键单击解决方案资源管理器中的引用,然后选择添加引用 ....在Xamarin Studio中,   右键单击解决方案板中的引用,然后选择编辑   参考 ....

         

    2.在搜索字段中,输入bind。找到后,启用旁边的复选标记,然后点击确定

  •   

参考: