Исключение Cordova, генерирующее запросы перекрестного происхождения, поддерживается только для схем протоколов

Я очень новичок в Cordova Framework. Я пытаюсь получить доступ к HTML-файлу из активности Droidgap, но получаю исключение, как,

Cross-origin requests are only supported for protocol schemes: HTTP, data, chrome, chrome-extension, https.

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

следующий код..

public class MainActivity extends DroidGap {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.appView.getSettings().setAllowFileAccess(true); //this line throws nullPointerException for appView
        super.appView.getSettings().setAllowFileAccessFromFileURLs(true);
        super.appView.getSettings().setAllowUniversalAccessFromFileURLs(true);

        super.loadUrl("file:///android_asset/www/MyHtml.html");
    }
}

Мой HTML находится в asset/www/MyHtml.html

Я действительно борюсь с этой проблемой, кто-нибудь может помочь выйти из этого?

1 ответ

Решение

Ты говоришь:

Запросы между источниками поддерживаются только для схем протоколов: HTTP, data, chrome, chrome-extension, https.

Вы также говорите (в комментарии):

В этом случае я получаю переменную appView как ноль, NullpointerException

Сначала получите appView с помощью метода getView() и используйте локальную переменную:

WebView myappView    = getView();//getView is a method from DroidGap super class
WebSettings settings = myappView.getSettings();

Вы не инициализируете DroidGap так добавь super.init(); следующее:

public class MainActivity extends DroidGap {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    super.init();//you were missing this
    WebView myappView    = getView();//getView is a method from DroidGap super class
    WebSettings settings = myappView.getSettings();
        settings.setAllowFileAccess(true); //this line throws nullPointerException for appView
        settings.setAllowFileAccessFromFileURLs(true);
        settings.setAllowUniversalAccessFromFileURLs(true);

        super.loadUrl("file:///android_asset/www/MyHtml.html");
    }
}

Вы должны быть в порядке, но вы также можете попробовать один (или все) из них (см. WebSettings):

settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setAllowFileAccess(true);
settings.setAllowContentAccess(true);

Смотрите исходный код DroidGap.java.

Другие вопросы по тегам