Я реализовал страницу веб-просмотра в Xamarin с пользовательским средством визуализации для увеличения / уменьшения страниц. Проблема в том, что WebView в android не позволяет сохранять изображения, которые были загружены в WebView, однако, с тем же кодом, который я могу загрузить в iOS.
. Есть ли способ? Я могу сохранить изображение, когда пользователь долго нажимает на изображение в WebView для android? Заранее спасибо.
Вот мой код, который я использую.
WebViewCustom
this._WebView = new WebViewCustom
{
BackgroundColor = AppConfig.MenuBackgroundColor,
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
Source = new UrlWebViewSource
{
Url = url
},
};
WebViewCustomRenderer Class
[assembly: ExportRenderer(typeof(WebViewCustom), typeof(WebViewCustomRenderer))]
namespace PBL.App.Droid.Renderers
{
class WebViewCustomRenderer : WebViewRenderer
{
public WebViewCustomRenderer(Context context) : base(context)
{
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (Control != null)
{
Control.Settings.BuiltInZoomControls = true;
Control.Settings.DisplayZoomControls = false;
Control.Settings.SetSupportZoom(true);
Control.Settings.AllowFileAccess = true;
MessagingCenter.Subscribe<object, bool>(this, "zoom", (sender1, arg) => {
Control.Settings.SetSupportZoom(arg);
});
}
base.OnElementPropertyChanged(sender, e);
}
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
if (Control != null)
{
Control.Settings.SetSupportZoom(true);
}
if(e.NewElement != null)
{
Control.Settings.AllowContentAccess = true;
Control.Settings.AllowUniversalAccessFromFileURLs = true;
Control.Settings.DomStorageEnabled = true;
Control.Settings.JavaScriptEnabled = true;
Control.Download += OnWebViewDownload;
}
base.OnElementChanged(e);
}
private void OnWebViewDownload(object sender, DownloadEventArgs e)
{
var source = Uri.Parse(e.Url);
var request = new DownloadManager.Request(source);
request.AllowScanningByMediaScanner();
request.SetNotificationVisibility(DownloadVisibility.VisibleNotifyCompleted);
request.SetDestinationInExternalPublicDir(Environment.DirectoryDownloads, source.LastPathSegment);
}
}
}