要在Android Xamarin
Cr
osswalk WebView中从Javas
cr
i
pt
调用
C#
函数
,可以使用以下步骤和示例代码:
在C#代码中创建一个类,该类包含可以被Jav
as
cr
i
pt
调用
的
函数
。例如,创建一个名为"JSInterface"的类:
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using Android.Webkit;
[assembly: ExportRenderer(typeof(YourPage), typeof(YourPageRenderer))]
namespace YourNamespace.Droid
public class YourPageRenderer : PageRenderer
public YourPageRenderer(Context context) : base(context)
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
base.OnElementChanged(e);
if (Control != null)
var webView = Control as global::Android.Webkit.WebView;
webView.Settings.JavaScriptEnabled = true;
webView.AddJavascriptInterface(new JSInterface(this), "JSInterface");
public class JSInterface : Java.Lang.Object
private readonly YourPageRenderer _renderer;
public JSInterface(YourPageRenderer renderer)
_renderer = renderer;
[Java.Interop.Export("CallCSharpFunction")]
[JavascriptInterface]
public void CallCSharpFunction(string parameter)
// Your C# code here
在XAML或C#代码中创建一个包含WebView的页面。在WebView中使用"JSInterface.CallCSharpFunction()"来调用C#函数。例如:
XAML:
<WebView x:Name="webView" Source="your_html_file.html" />
public class YourPage : ContentPage
public YourPage()
var webView = new WebView();
webView.Source = "your_html_file.html";
Content = webView;
在Javascript中调用C#函数。在Javascript代码中,使用"window.JSInterface.CallCSharpFunction(parameter)"来调用C#函数。例如:
<script>
function callCSharpFunction() {
var parameter = "your_parameter";
window.JSInterface.CallCSharpFunction(parameter);
</script>
注意:要使此示例正常工作,确保你的Xamarin项目中已经安装了Crosswalk WebView插件。