Ошибка доступа-контроля-разрешения-источника на Android 4.1

У меня проблемы с Access-Control-Allow-Origin на Android 4.1

В моем приложении у меня есть некоторые локальные HTML файлы и Javascripts, которые я использовал для извлечения данных из веб-служб. До попытки Android 4.1 не было никаких проблем, но после попытки на Android 4.1 я получил эту ошибку.

Я прочитал много документов, но не смог найти способ решить эту проблему.

Ответы

Ответ 1

вам нужно сделать что-то вроде

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) 
  wv.getSettings().setAllowUniversalAccessFromFileURLs(true);

Ответ 2

@Я разработчик и другие, которые сталкиваются с той же проблемой.

Решение Slushis отлично работает. Но если вы хотите скомпилировать и поддерживать системы ниже API11, вы должны добавить следующее:

if (Build.VERSION.SDK_INT >= 16) {  
    Class<?> clazz = webView.getSettings().getClass();
    Method method = clazz.getMethod("setAllowUniversalAccessFromFileURLs", boolean.class);
    if (method != null) {
        method.invoke(webView.getSettings(), true);
    }
}

Это будет загружаться и вызывать метод во время выполнения, поэтому вы можете скомпилировать, например. Android 2.3.3.

Ответ 3

Являются ли ваши веб-сервисы хостингом из того же домена? Я использовал эту ошибку при создании ajax-вызова для службы в другом домене. Если у вас есть контроль над веб-службой, вы можете установить Access-Control-Allow-Origin: * в заголовке (хотя этот способ не является безопасным способом для этого).