2

我想在我的Xamarin.Forms應用程序中啓用HTML5 localstorage。當我部署到Android設備時,我可以看到網頁出錯,因爲local storage未啓用。如何在Xamarin.Forms中的Android WebView上啓用本地存儲

本身,localStorage的可如下啓用:

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

如何/我在哪裏可以訪問Android的Web視圖(Android.WebKit.Webview)這些平臺的具體設置時,我只能訪問到Xamarin 。表單webview(Xamarin.Forms.WebView)。

更一般地說,是否可以在Xamarin.Forms或Xamarin.Forms中編寫特定於平臺的代碼,除了最基本的應用程序之外,其他所有代碼都受限制?

回答

5

是的,當使用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))] 
0

您可以在需要時使用custom renderers編寫特定於平臺的代碼。通過遵循該鏈接,您將看到如何爲每個平臺定製控件的不同示例。就你而言,你將繼承WebViewRenderer以提供特定於Android的行爲。

相關問題