Xamarin-文件:/// android_asset

时间:2018-06-30 02:54:17

标签: c# android xamarin webview xamarin.forms

我的应用程序做什么: 将index.html加载到WebView

index.html's Code:

<html>
<body>
<a href="Posts10.html"><h2>Interesting Stuff</h2></a>
</body>
</html>

因此,每当我单击链接时,都会出现此错误:

enter image description here

index.htmlPosts10.html位于

Environment.GetFolderPath(Environment.SpecialFolder.Personal) + @"/CachedPosts"

a.k.a

"/data/user/0/com.companyname.theoctant/files/CachedPosts"

2 个答案:

答案 0 :(得分:2)

这可能会有所帮助。从Xamarin文档中:

  

在Android上,将HTML,CSS和图像放置在Assets文件夹中,   如下所示构建动作AndroidAsset:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=vswin#android

答案 1 :(得分:0)

  

有Internet连接时,WebView将打开一个URL。但是,如果没有,它将打开一个html文件。和Xamarin形式

您需要做的就是交换正在使用的WebViewSource的类型,并为是否连接而分配适当的属性。

因此对于Forms的WebView,如果已连接“ Internet”,则创建一个UrlWebViewSource并分配属性Url,否则,创建一个HtmlWebViewSource并分配BaseUrl <{>> 或您的自定义缓存目录 添加到NSBundle.MainBundle.BundlePathfile:///android_asset/中。

类似这样的东西:

WebViewSource webViewSource;
if (InternetConnected)
{
    webViewSource = new UrlWebViewSource { Url = "https://stackoverflow.com" };
}
else
{
    string baseUrl = cacheDir;
    webViewSource = new HtmlWebViewSource { BaseUrl = baseUrl, Html = cachedHtml };
}
webView.Source = webViewSource;