Cordova 抛出异常 跨域请求仅支持协议方案
Posted
技术标签:
【中文标题】Cordova 抛出异常 跨域请求仅支持协议方案【英文标题】:Cordova throwing exception Cross origin requests are only supported for protocol schemes 【发布时间】:2018-06-27 07:12:31 【问题描述】:我对 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
我真的在这个问题上苦苦挣扎,谁能帮忙解决这个问题?
【问题讨论】:
你缺少 super.init();设置 appView 变量。 【参考方案1】:你说:
跨域请求仅支持协议方案:HTTP, 数据,铬,铬扩展,https。
你还说(在评论中):
在这种情况下,我将 appView 变量设为 null, 空指针异常
首先用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源代码。
【讨论】:
在这种情况下,我将 appView 变量设为 null,NullpointerException @Tushar Digambar Deshpande 你为什么不把它放在问题中?查看我的更新答案 对此很抱歉,但即使在添加上述行之后,即 getView() 无法正常工作并抛出相同的 NullPointerException。它说super中没有这样的方法(即在Droidgap类中)以上是关于Cordova 抛出异常 跨域请求仅支持协议方案的主要内容,如果未能解决你的问题,请参考以下文章