如何在 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))]
我想在我的 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 项目
上创建您的自定义 WebCiewRendererpublic 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))]