Cordova抛出异常只有协议方案支持Cross origin请求

时间:2018-01-18 09:10:51

标签: android html eclipse cordova droidgap

我对Cordova框架很新。我试图从Droidgap活动访问HTML文件,但获得异常,

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

为此,我发现了一个link,也许你会发现这个问题是重复的,但我正在寻找Android解决方案,他们说要安装本地服务器,然后尝试访问这个HTML,但在我的我希望它可以在MainActivity中访问。

以下是代码..

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 个答案:

答案 0 :(得分:1)

你说:

  

跨域请求仅支持协议方案:HTTP,   数据,chrome,chrome-extension,https。

你也说(评论中):

  

在这种情况下,我将appView变量设为null,   的NullPointerException

首先使用getView()方法获取appView,然后使用局部变量:

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源代码。