如何在 Xamarin.Forms 中的 Android WebView 上启用本地存储

How to enable local storage on Android WebView in Xamarin.Forms

我想在我的 Xamarin.Forms 应用程序中启用 HTML5 本地存储。当我部署到 Android 设备时,我可以看到网页出错,因为本地存储未启用。

本地,本地存储可以启用如下:

    webview = (WebView) findViewById(R.id.webview); 
    WebSettings settings = webview.getSettings(); 
    settings.setDomStorageEnabled(true);

How/where 当我只能访问 Xamarin.Forms 网络视图(Xamarin.Forms.WebView).

更一般地说,是否可以在 Xamarin.Forms 中编写特定于平台的代码,或者 Xamarin.Forms 对于除了最基本的应用程序之外的所有应用程序来说是否太有限了?

您可以在需要时使用 custom renderers 编写特定于平台的代码。通过遵循 link,您将看到有关如何为每个平台自定义控件的不同示例。在您的情况下,您将子类化 WebViewRenderer 以提供 Android 特定的行为。

是的,使用 Xamarin.Forms 时可以编写特定于平台的代码,这正是 Paul 所说的渲染器可扩展性的功能。

在表单上创建自定义 WebView PCL

public class CustomWebView : WebView { }

在您的 Android 项目

上创建您的自定义 WebCiewRenderer
public class CustomWebViewRenderer : global::Xamarin.Forms.Platform.Android.WebViewRenderer
{
    protected override void OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.WebView> e)
    {
        base.OnElementChanged (e);

        if (Control != null) {
            Control.Settings.DomStorageEnabled = true;
        }
    }
}

不要忘记导出渲染器

[assembly: ExportRenderer (typeof (CustomWebView), typeof(CustomWebViewRenderer))]