Откройте локальные HTML-файлы в Xamarin.Веб-просмотр форм ОТСУТСТВУЕТ в папке Assets

#c# #xamarin.forms #xamarin.forms.webview

#c# #xamarin.forms #xamarin.forms.webview

Вопрос:

Я пытаюсь открыть многостраничную веб-страницу HTML (т. Е. test.html, test.css и test.js ), который был загружен динамически (поэтому нельзя использовать ресурсы) и сохранен во внутреннем хранилище приложений (Xamarin.Основы.Файловая система.AppDataDirectory).

URL, который я пытаюсь использовать, выглядит следующим образом:

file:///data/user/0/com.test/files/HTML/Test.html

Однако я просто получаю файл, который не найден.

         var filesToDownload = new string[] { "http://myserver/test/test.html", "http://myserver/test/test.css" };
        var directory = System.IO.Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "HTML");

        if (System.IO.Directory.Exists(directory))
        {
            System.IO.Directory.Delete(directory, true);
        }

        System.IO.Directory.CreateDirectory(directory); 

        using (var wc = new System.Net.WebClient())
        {
            foreach (var f in filesToDownload)
            {
                wc.DownloadFile(f, System.IO.Path.Combine(directory, System.IO.Path.GetFileName(f)));
            }
        }

        var source = new UrlWebViewSource
        {
            Url = System.IO.Path.Combine("file://"   directory, "Test.html")
        };

        WebView1.Source = source;
  

Комментарии:

1. Что делает System.IO.Path. Объединить(«файл://» каталог, «Test.html «) разрешить? Задаете ли вы допустимый URL-адрес файла html?

2. file:///data/user/0/com.test/files/HTML/Test.html

3. После еще нескольких поисковых запросов я обнаружил, что WebView запускается с отдельной папкой AppData и не может получить доступ к основной папке AppData.

4. Я опубликовал ответ на ваш вопрос, пожалуйста, попробуйте.

Ответ №1:

Есть несколько моментов, которые вы должны убедиться:

1 Добавьте Xamarin.Пакет Essentials NuGet для каждого проекта

2 http://myserver/test/test.html и http://myserver/test/test.css существуют и доступны.

3 Имя файла источника webview должно совпадать с именем файла, который вы записали в свое хранилище. Не Test.html , но test.html

Поэтому Url = System.IO.Path.Combine("file://" directory, "Test.html") следует изменить на

Url = System.IO.Path.Combine("file://" directory, "test.html")