【问题标题】:How to enable local storage on Android WebView in Xamarin.Forms如何在 Xamarin.Forms 中的 Android WebView 上启用本地存储
【发布时间】:2016-03-06 21:27:00
【问题描述】:

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

本地存储可以按如下方式启用:

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

当我只能访问 Xamarin.Forms Web 视图 (Xamarin.Forms.WebView) 时,如何/在哪里可以访问 Android Web 视图 (Android.WebKit.Webview) 的这些平台特定设置。

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

【问题讨论】:

    标签: webview xamarin android-webview xamarin.forms custom-renderer


    【解决方案1】:

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

    在表单 PCL 上创建您的自定义 WebView

    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))]
    

    【讨论】:

      【解决方案2】:

      您可以在需要时使用custom renderers 编写特定于平台的代码。通过点击该链接,您将看到如何为每个平台自定义控件的不同示例。在您的情况下,您将继承 WebViewRenderer 以提供特定于 Android 的行为。

      【讨论】:

        猜你喜欢
        • 2013-05-02
        • 1970-01-01
        • 2016-09-16
        • 2017-04-25
        • 2015-07-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2012-02-29
        相关资源
        最近更新 更多