Xamarin 不允许加载本地资源文件

Posted

技术标签:

【中文标题】Xamarin 不允许加载本地资源文件【英文标题】:Xamarin Not allowed to load local resource file 【发布时间】:2018-03-16 00:29:22 【问题描述】:

我在加载页面 File.html 时遇到问题。我想在 html 中加载我的地​​图,但模拟器没有显示。我得到了错误:

" [INFO:CONSOLE(0)] "不允许加载本地资源:file:///android_asset/HTMLPage1.html",来源:data:text/html,chromewebdata(0)"

" I/chromium(11080): [INFO:CONSOLE(0)] "不允许加载本地资源:file:///android_asset/webkit/android-weberror.png",来源:data:text/html ,chromewebdata (0) "

在模拟器页面上显示“网页不可用”

Xaml 文件:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:Mapaht"
         x:Class="Mapaht.Mapahet">


  <WebView
  x:Name="webviewjava"></WebView>
</ContentPage>

页面文件

public Mapahet()
    
        InitializeComponent();


        webviewjava.Source = "file:///android_asset/HTMLPage1.html";
    

【问题讨论】:

developer.xamarin.com/guides/xamarin-forms/user-interface/… 我试过了,还是不行 如果您在 Forms 的 WebView 中使用 file:///android_asset 加载内容,那么您没有遵循我链接的指南,file:///android_asset 用于 Android WebView 小部件,而不是 Form 的 @ 987654327@ 【参考方案1】:

我在加载页面 File.html 时遇到问题。

执行以下步骤,对我来说效果很好:

XAML:

<WebView
    x:Name="webviewjava" 
    HorizontalOptions="FillAndExpand" 
    VerticalOptions="FillAndExpand"
    />

PCL 中的接口

public interface IBaseUrl

    string Get();

在Android中实现这个接口

[assembly: Dependency(typeof(BaseUrl_Android))]
namespace FormsWebview.Droid

    public class BaseUrl_Android : IBaseUrl
    
        public string Get()
        
            return "file:///android_asset/";
        
     

Assets文件夹中加载本地资源文件

public MainPage()

    InitializeComponent();

    var baseUrl = DependencyService.Get<IBaseUrl>().Get();
    string Url = $"baseUrllocal.html";
    webviewjava.Source = Url;

【讨论】:

【参考方案2】:

您在设置内容视图之前获取 WebView,因此 wv 可能为空。

 protected override void OnCreate (Bundle savedInstanceState)
        
            base.OnCreate (savedInstanceState);
                SetContentView (Resource.Layout.webview);
                 WebView wv;  
                wv =  FindViewById<WebView>(Resource.Id.webviewjava);  
                wv.LoadUrl("file:///android_asset/HTMLPage1.html");   
              
        

您需要在可以访问互联网的 AndroidMainfest.xml 文件中拥有权限:

 <uses-permission android:name="android.permission.INTERNET" />

【讨论】:

以上是关于Xamarin 不允许加载本地资源文件的主要内容,如果未能解决你的问题,请参考以下文章

不允许加载本地资源

Internet 浏览器中的文件 URL“不允许加载本地资源”

Internet 浏览器中的文件 URL“不允许加载本地资源”

不允许加载本地资源图像文件:/// C:/ uploads / images

Cordova 10 和 Android SDK 30:无法访问本地文件(“不允许加载本地资源:file:///storage/emulated/0/Android/data...”)

“不允许加载本地资源:file:///C:..jpg” Java EE Tomcat