在 webview MAUI 中以“blob:”开头的下载 url

问题描述 投票:0回答:1

我正在尝试从我的 MAUI 应用程序下载一些文件。应用程序建立在应该从中下载文件的 webView 上。我的 DownloadListner 中有这个逻辑:

 public class CustomDownloadListener : Java.Lang.Object, IDownloadListener
 {
  
     public async void OnDownloadStart(string url, string userAgent, string contentDisposition, string mimetype, long contentLength)
     {
            try
            {
                
                    DownloadManager.Request request = new DownloadManager.Request(global::Android.Net.Uri.Parse(url.Replace("blob:", "")));
                    
                    request.SetMimeType(mimetype);
                    request.SetNotificationVisibility(DownloadVisibility.VisibleNotifyCompleted);

                    // if this path is not create, we can create it.  
                    string thmblibrary = FileSystem.AppDataDirectory + "/download";
                    if (!Directory.Exists(thmblibrary))
                        Directory.CreateDirectory(thmblibrary);

                    request.SetDestinationInExternalFilesDir(global::Android.App.Application.Context, FileSystem.AppDataDirectory, "download");
                    DownloadManager dm = (DownloadManager)global::Android.App.Application.Context.GetSystemService(global::Android.App.Application.DownloadService);
                    dm.Enqueue(request);
            }
            catch(Exeption ex)
            {
            }
      }
      
}

这适用于传输应用程序中的大部分文件,但如果 URL 以“blob:https://...”开头,DownloadManager 将抛出异常。在这种情况下,我还尝试从 URL 中删除“blob:”,文件已下载但已损坏。

还有其他方法可以传输这些文件吗?

c# url download blob maui
1个回答
0
投票

这是android webview中的限制。

Android DownloadManager 仅用于使用 HTTP / HTTPS 协议下载远程文件。 blob 不是远程数据,而是 WebView 中的某些内容。所以解决方法是将 Blob 转换为 Base64 字符串并将其写入文件。

可以参考在Android WebView中无法下载Blob文件类型的案例在Android WebViewClient中从网站下载Blob文件

另外,你可以参考这个案例如何在xamarin.android中使用JavaScriptInterface他在maui中使用JavaScriptInterface的答案

© www.soinside.com 2019 - 2024. All rights reserved.