尝试从磁盘加载资源时,Android WebView会抛出"仅支持http的跨源请求"异常

mor*_*eus 12 android webview

我用html/js开发了一个单页游戏,我试图在android webview中托管它.我有一个文件夹src/main/assets/www/和这行代码来引导我的应用程序:

mWebView.loadUrl("file:///android_asset/www/index.html");
Run Code Online (Sandbox Code Playgroud)

index.html负载一个app.js文件,该文件是我的比赛.当我试图使xhr来自内部的请求app.js来获得assets/myimage.svg(物理位置src/main/assets/www/assets/myimage.svg):

var xhr = new XMLHttpRequest();
        xhr.open('get', 'assets/myimage.svg', true);
        xhr.send();
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:cross origin requests are only supported for http.为什么这是一个跨源请求?我该怎么做才能解决这个问题?我不能在http网络服务器上托管svg,也不能内嵌它app.js- 它必须从磁盘加载.

min*_*bro 47

不确定,但您可以尝试这些步骤,看看它是否有帮助:

a)初始化WebView:

b)获取WebView设置:

WebSettings settings = _webView.getSettings();
Run Code Online (Sandbox Code Playgroud)

c)设置以下设置:

settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
Run Code Online (Sandbox Code Playgroud)

d)现在你可以通过标准方式加载你的html文件:

mWebView.loadUrl("file:///android_asset/www/index.html");
Run Code Online (Sandbox Code Playgroud)

e)不要忘记在清单文件中添加互联网权限:

<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)