android - Cordova 抛出异常跨源请求仅支持协议(protocol)方案

标签 android html eclipse cordova droidgap

我是 Cordova 框架的新手。我正在尝试从 Droidgap Activity 访问 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

我真的很纠结这个问题,谁能帮我解决这个问题?

最佳答案

你说:

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

你还说(在评论中):

In this case I am getting appView variable as 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源代码。

关于android - Cordova 抛出异常跨源请求仅支持协议(protocol)方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48317479/

相关文章:

C# Monodroid 事件处理程序

android - 如何禁用Android应用程序中的按钮

javascript - 如何在客户端javascript中读取本地csv文件?

css - 我可以更改用于内容高度的字体尺寸吗?

javascript - 动态地,在具有指定类名 (jQuery) 的每个元素(div、图像、跨度等)上添加重叠的 div

eclipse - 如何找出Eclipse在后台执行的操作?

java - 如何从类中检索已弃用方法的列表

安卓工作室 : ExternalSystemException

Android:在哪里以及如何在应用程序中存储图像?

Eclipse + Git - "staged"是什么意思?