Я загружаю локальный html-файл (из папки assets) в WebView приложения. В HTML я запускаю jQuery.getJSON(url). url - это удаленный сервер.
Это действие не срабатывает, и я предполагаю, что это связано с проблемой другого происхождения (кросс-домен). Я запускаю тот же файл в chrome и там конкретно написано.
Есть ли способ позволить WebView в Android загружать данные с удаленного сервера в локально загруженный HTML файл?
Я загружаю локальный html-файл (из папки assets) в приложение WebView
Обратите внимание, что вы не смогли сказать, как вы это делаете. Я собираюсь догадаться, что это было loadUrl()
на file:///android_asset
URL.
Можно ли разрешить WebView в Android загружать данные с удаленного сервера в локальный загруженный файл HTML?
Попробуйте использовать loadDataWithBaseURL()
для загрузки содержимого, предоставив URL на удаленном сервере в качестве базового URL.
Сегодня утром я нашел решение, которое, кажется, работает.
Инициализируйте ваш WebView:
WebView _webView = (WebView) this.findViewById(R.id.id_of_your_webview_in_layout);
получите настройки WebView:
WebSettings settings = _webView.getSettings();
установите следующие настройки:
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true); //Maybe you don't need this rule
settings.setAllowUniversalAccessFromFileURLs(true);
теперь вы можете загрузить свой HTML-файл стандартным способом:
_webView.loadUrl("file:///android_asset/www/index.html");
Создать запрос XHR стандартным способом
var xhr = new XMLHttpRequest();
xhr.open("get", "http://google.com", false);
xhr.send();
Распечатать результат где-нибудь
document.body.innerHTML = xhr.responseText
УВЕДОМЛЕНИЕ: Эта процедура работает только на уровне API 16 или выше (по крайней мере, в документации это сказано).
Решением, которое мы использовали, было использование Android для получения файлов обновлений с сервера, размещения их и перезаписи файлов в веб-папке, а затем просмотра.