Xamarin Forms WebView在Android中加载混合内容

时间:2018-11-09 10:47:28

标签: android xamarin webview xamarin.forms mixed-content

我有一个Xamarin Forms WebView。源是一个包含混合内容(链接到https和http资源)的网页。它可以在Xamarin Forms iOS中正常加载,但是在Android中不会加载,我怀疑问题出在混合内容。

如何设置MixedContentMode?

https://docs.microsoft.com/de-de/dotnet/api/xamarin.forms.platformconfiguration.androidspecific.webview.setmixedcontentmode?view=xamarin-forms

有文档

但是我不知道如何使用它。有人可以给我一个例子吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您已经在代码或XAML中定义了WebView,这将有所不同。

如果您在代码中定义了它,请确保使用变量名对其进行引用,例如:

var myWebView = new WebView();

在这种情况下,

myWebView是我要说的。

然后,在班级顶部使用此符号:

using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;

然后在初始化WebView后添加以下行:

myWebView.On<Android>().SetMixedContentMode(MixedContentHandling.AlwaysAllow);

在XAML中,将正确的名称空间添加到页面的根目录,如下所示:

<ContentPage xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core" ....>

然后,您可以在WebView上添加另一个属性:<WebView ... android:WebView.MixedContentMode="AlwaysAllow" />

这些是所谓的特定于平台的。您可以直接从Xamarin.Forms共享代码设置特定于平台的属性,而不是为一个简单属性设置自定义渲染器。

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/platform-specifics/上了解更多信息,并在https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/platform-specifics/consuming/android#enabling-mixed-content-in-a-webview

上消费(实际上是这种情况)

关于此处实际设置的注释,在示例中,我只是将其设置为AlwaysAllow,以确保您知道每个选项的作用并将其设置为最安全的选项。这是一个简短的解释,摘自Microsoft Docs:

  
      
  • AlwaysAllow –表示WebView将允许HTTPS源从HTTP源加载内容。
  •   
  • NeverAllow –指示WebView不允许HTTPS源从HTTP源加载内容。
  •   
  • CompatibilityMode –表示WebView将尝试与最新的设备Web浏览器的方法兼容。一些   可以允许HTTPS源和其他HTTP内容加载HTTP内容   内容类型将被阻止。内容的类型   每次操作系统发行版,被阻止或允许的更改都可能会发生变化。
  •