Xamarin.Android中的JavascriptInterface已过时,无法从Javascript调用C# [英] JavascriptInterface in Xamarin.Android is obsolete and cant invoke C# from Javascript
本文介绍了Xamarin.Android中的JavascriptInterface已过时,无法从Javascript调用C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
经过进一步调查,我发现编译器给出了[JavascriptInterface]已过时的警告! https://docs.microsoft.com/en-us/dotnet/api/android.webkit.javascriptinterface?view=xamarin-android-sdk-9 他们建议改用(IJavascriptInterface)
以下是要检查的代码
[JavascriptInterface]
[Export ("invokeAction")]
public void InvokeAction (string data)
{
HybridWebViewRenderer hybridRenderer;
if (hybridWebViewRenderer != null && hybridWebViewRenderer.TryGetTarget (out hybridRenderer))
{
hybridRenderer.Element.InvokeAction (data);
}
}
有没有人知道如何正确实现它来修复它,并让Javascript再次调用我的C#代码。
推荐答案
它仍然可以在我的Xamarin.Android项目中使用[JavascriptInterface]
这是我的示例的一部分:
var webview = FindViewById<WebView>(Resource.Id.webView1);
WebSettings settings = webview.Settings;
settings.JavaScriptEnabled = true;
// load the javascript interface method to call the foreground method
webView.AddJavascriptInterface(new MyJSInterface(this), "CSharp");
webview.SetWebViewClient(new WebViewClient());
MyJSInterface类:
class MyJSInterface : Java.Lang.Object
{
Context context;
public MyJSInterface (Context context)
{
this.context = context;
}
[JavascriptInterface]
[Export]
public void ShowToast (string msg)
{
Toast.MakeText(context, msg, ToastLength.Short).Show();
}
}
和html格式:
<button type="button" onClick="CSharp.ShowToast ('Call C#')">Call C#</button>
您可以参考https://stackoverflow.com/a/54069075/10768653
这篇关于Xamarin.Android中的JavascriptInterface已过时,无法从Javascript调用C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文