在做项目的时候,发现了一个棘手的问题,就是在有的手机上加载本地html5会报错,报的错误是
XMLHttpRequest cannot load file://mnt/sdcard/WisdomTraval/taagoo.flash/30/tour.xml. Cross origin requests are only supported for HTTP.
js/libs/text.js:7Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
js/libs/text.js:7Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
刚开始看见这个问题我一头雾水,根本不知道从哪儿着手,我就在百度上搜这个错误的相关信息,在网上查阅了资料才发现是浏览器的安全性设置问题,因为android手机的默认浏览器都是webkit内核的,而webkit内核的浏览器默认是禁止从本地ajax加载文件的。这样,我有了初步的解决思路,就是更改手机上的浏览器安全性设置,当我在网上查阅了资料后才发现只有PC端浏览器的属性设置解决方案,android手机没有给用户提供相应的权限。
再三思考,我决定在加载之前先看看手机上有没有安装不是webkit内核的浏览器,如果有,就用不是webkit内核的浏览器加载,如果没有就提醒用户下载相应的浏览器或者从服务器上加载html5。在网上查了一下,发现android手机的默认浏览器均采用webkit作为浏览器内核,只有firefox采用的是GekCo内核,微软的IE系列使用的是Trident内核,而QQ浏览器一部分使用的是webkit内核,一部分是其他内核。于是,我就在测试机上安装了一个firefox,我手动加载了一下本地的html5,奇迹果然出现了,动景正常加载。趁热打铁,我就执行了一下程序,结果还是很令人失望,报的还是原来的错误,此时我的心情落到了低谷。
我再看看程序,我是用webview加载的本地html5,我就看了一下webview的官方api,我看到了这样一句话
This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit rendering engine to display web pages 。
· 原来webview也相当于一个浏览器,使用webkit作为渲染引擎,这才发现使用webview加载本地html5和手机的外部浏览器没有关系,这样问题又回到了原点,我百思不得其解,为什么同样是webkit内核,在有的手机上就可以加载本地html5,而有的手机就禁止加载本地html5,究其原因就是webkit内核默认是禁止加载本地html5,有的厂商修改了安全性设置,就可以加载了。
现在原因基本上已经确定了,就是webkit内核禁止加载本地html5,还有浏览器的安全性设置问题,知道了原因,下一步就是解决问题,解决的方案后面再总结。
相关推荐
### Android Studio加载本地HTML文件详解 #### 一、引言 在进行Android应用开发时,有时需要在应用内部展示HTML内容。例如,显示帮助文档、用户手册或是简单的网页信息等。传统的Eclipse环境下,通常的做法是将...
总的来说,这个压缩包提供了一个学习和探索Android WebView加载本地HTML5页面的起点。开发者可以通过研究这些示例,了解如何将HTML5页面集成到Android应用中,同时掌握JavaScript与Java代码的交互技巧,以实现更丰富...
这个"Android打开本地HTML网页AndroidStudio工程.rar"文件很可能包含了一个简单的示例项目,演示如何在Android应用中加载并显示本地HTML文件。这里我们将深入探讨实现这一功能所涉及的关键知识点。 1. **WebView...
WebView不仅能够加载远程HTTP/HTTPS网址,还能处理本地HTML、CSS和JavaScript资源,极大地增强了应用的功能和用户体验。本文将深入探讨如何使用WebView加载网页以及本地图片,并解决缓存问题。 一、WebView的基本...
以上就是Android中使用WebView加载HTML并引用本地资源的基本步骤。通过结合HTML、CSS和JavaScript,你可以构建出丰富的交互式应用界面,同时利用本地资源提升性能和用户体验。记得在实际项目中,还要考虑安全性和...
综上所述,Android中嵌入本地HTML并支持AJAX请求和CSS、JS加载涉及多个步骤,需要对WebView组件、文件系统访问、JavaScript与Java交互、网络请求以及安全有深入理解。正确配置和使用这些特性,可以创建出功能强大的...
本篇文章将详细探讨如何使用Android的WebView加载本地HTML,并实现Java代码与HTML内容之间的交互。 一、WebView基本使用 1. 添加依赖:在AndroidManifest.xml文件中,确保WebView的权限已经开启,如`...
在Android开发中,有时我们需要通过网页(HTML)来调用本地的应用程序,这通常涉及到Web与原生应用的交互。这个资源"android通过html打开本地app"提供了一种实现方式,使得开发者能够从HTML页面中启动Android应用...
HTML5与Android网络音乐播放器是一种技术融合的产物,它结合了HTML5的网页开发能力与Android平台的原生功能,使得用户可以在浏览器或者特定的Web应用中播放网络音乐,甚至能够调用Android设备的本地音乐库。...
在使用`file://`协议时,注意安全问题,因为从Android 8.0(API级别26)开始,WebView默认禁止加载`file://` URL。为了支持本地文件,我们需要开启这个权限: ```java webView.getSettings().setAllowFileAccess...
记得在AndroidManifest.xml中添加INTERNET权限,即使我们是在本地加载文件,因为WebView可能需要访问网络资源。 为了调用JavaScript中的`showAlertDialog`函数,我们可以使用WebView的`evaluateJavascript`方法: ...
本文将深入探讨如何使用WebView加载本地HTML文件并操作本地数据,同时涉及JS与Java的交互,实现数据的双向传递,以及分页功能的实现。 首先,我们来理解WebView的基本使用。在Android布局XML文件中,添加WebView...
本示例“android中webview加载本地页面,并处理js事件”着重讲解如何利用`WebView`加载本地HTML页面,并通过JavaScript Interface与Java代码进行交互,同时在HTML中动态生成组件如`button`。 1. **WebView基本使用**...
加载本地HTML源码通常有以下几种方式: 1. **直接加载本地文件**:你可以将HTML、CSS、JavaScript等文件放在应用的`assets`或`res/raw`目录下。然后通过`loadDataWithBaseURL()`方法加载。例如,如果你的HTML文件在...
本教程将聚焦于如何利用jQuery Mobile和HTML5来访问并操作Android设备上的本地通讯录。 首先,jQuery Mobile是一个基于HTML和CSS的框架,它提供了丰富的UI组件和交互效果,使得开发者可以创建具有触摸友好的用户...
本篇将详细讲解如何利用`Android Studio`集成`NanoHTTPD`来创建一个本地HTTP服务器,并通过`WebView`加载服务器上的HTML页面。 首先,`Android Studio`是Google推出的一款强大的Android应用程序集成开发环境,它...
在Android开发中,调用HTML5加载网页是常见的需求,特别是在构建混合应用或者实现部分功能时。这涉及到WebView组件的使用,它是Android提供的一种原生控件,能够加载和显示网页内容。本篇将深入探讨如何在Android中...
在Android开发中,有时我们需要将原生应用与Web内容相结合,这时就涉及到Android原生代码调用HTML5页面以及数据的交互。这个"android原生调用html5"的示例,通过一个名为"WebViewDemo"的项目,展示了如何实现这一...
在WebViewLoadDemo这个示例项目中,可能包含了上述所有操作的完整代码,你可以参考该项目学习和实践如何在Android应用中有效地使用WebView加载本地HTML文件。总的来说,理解并熟练掌握WebView的使用对于Android...
为了加载本地文件,应用需要获取对应的读取权限(READ_EXTERNAL_STORAGE或MANAGE_EXTERNAL_STORAGE,根据Android版本有所不同)。 - 文件路径的处理需注意沙盒机制,确保路径正确无误,对于外部存储的文件,通常...