我已经在 html/js 中开发了一个单页游戏,并试图将其托管在 android webview 中。我有一个文件夹 src/main/assets/www/
和这行代码来引导我的应用程序:
mWebView.loadUrl("file:///android_asset/www/index.html");
index.html
加载一个 app.js
文件,这是我的游戏。当我尝试从 app.js
中发出 xhr
请求以获取 assets/myimage.svg
(物理位置 src/main/assets/www/assets/myimage.svg
) :
var xhr = new XMLHttpRequest();
xhr.open('get', 'assets/myimage.svg', true);
xhr.send();
我收到此错误:cross origin requests are only supported for http
。为什么这是一个跨源请求?我该怎么做才能解决这个问题?我无法在 http 网络服务器上托管 svg,也无法将其内联到 app.js
- 它必须从磁盘加载。
最佳答案
不确定,但您可以尝试这些步骤,看看是否有帮助:
a) 初始化您的 WebView:
b) 获取 WebView 设置:
WebSettings settings = _webView.getSettings();
c) 设置以下设置:
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
d) 现在您可以通过标准方式加载您的 html 文件:
mWebView.loadUrl("file:///android_asset/www/index.html");
e) 不要忘记在 list 文件中添加互联网权限:
<uses-permission android:name="android.permission.INTERNET"/>
关于Android WebView 在尝试从磁盘加载资源时抛出 "cross origin requests are only supported for http"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25439619/