我在html / js中开发了一个单页游戏,并且我试图在android webview中托管它。我有一个文件夹src/main/assets/www/
和这行代码来引导我的应用程序:
mWebView.loadUrl("file:///android_asset/www/index.html");
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();
我收到此错误:cross origin requests are only supported for http
。为什么这是一个跨源请求?我该怎么做才能解决这个问题?我无法在http网络服务器上托管svg而无法在app.js
内嵌它 - 它必须从磁盘加载。
答案 0 :(得分:44)
不确定,但您可以尝试这些步骤,看看是否有帮助:
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)不要忘记在清单文件中添加互联网权限:
<uses-permission android:name="android.permission.INTERNET"/>
答案 1 :(得分:0)
如果您正在寻找与Android相同的问题,但使用Xamarin / C#
var webView = FindViewById<WebView>(Resource.Id.webView);
webView.Settings.JavaScriptEnabled = true;
webView.Settings.AllowFileAccessFromFileURLs = true;
webView.Settings.AllowUniversalAccessFromFileURLs = true;
webView.LoadUrl("file:///android_asset/www/index.html");