#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")