Android WebView выбрасывает "запросы на кросс-поиск только для исключения http" при попытке загрузить ресурс с диска

Я разработал одностраничную игру в html/js и пытаюсь разместить ее в веб-обозревателе Android. У меня есть папка 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. почему это запрос перекрестного происхождения? что я могу сделать, чтобы исправить это? Я не могу разместить svg на веб-сервере http и не могу встроить его в app.js - он должен быть загружен с диска.

Ответ 1

Не уверен, но вы можете попробовать эти шаги и посмотреть, помогает ли это:

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"/>

Ответ 2

Если вы ищете ту же проблему с Android, но используете Xamarin/С#

        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");