我是 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/