cordova/ionic制作一个文件浏览器(一)

开始学习ionic有一段时间了,问遍谷哥和度娘,都没有找到一个方便好用的文件浏览器,所以决定自己写一个文件浏览器。动工之前,先找参考资料,经过筛选,有两个资料具有参考意义
github上的一个写好的示例:ionic编写的
极客学院的教程(参考html file api的教程):cordova编写的

根据github上的例子,一步一步写完以后,悲剧的事情发生了,打开文件浏览器一片空白;后来又专门打开视频看了一遍操作演示,反复对比没有遗漏的地方,但是浏览器打开还是一片空白。接着看极客学院的****,按照操作步骤一步一步做了以后,打开浏览器依然是一片空白。下载了教程中提供的资料,里面有一个apk包,安装以后,神奇的事情发生了,文件浏览器正常显示了。此刻我陷入了沉思。。。

为了排除个别设备的影响,在另外一台设备上重新进行了测试,文件浏览器依然是一片空白。既然SD卡根目录无法读取,那就试一下其他目录吧,结果却让人大跌眼镜,除了SD卡根目录,其他目录都可以正常读取。突然的灵感迸发,会不会是由于android的版本影响呢,我就用同事android5.1版本(之前测试的都是android6.0)的手机进行了测试,结果让人喜出望外,文件浏览器可以正常显示了。

既然定位到了问题,那就想办法解决了,原来是由于android6.0权限控制方面进行了升级,对权限的请求进行了分组,请求读写外部存储设备是“危险”类的请求,需要在运行时进行请求。详细说明可参考官方说明 中文说明

针对这个问题,目前我想到了两个解决办法:
1.修改android的编译版本
2.添加运行时请求权限的功能

本节就最简单的第一种方法进行说明
AndroidManifest.xml中修改如下配置android:targetSdkVersion 23(默认值和安装的cordova版本有关,我这里安装的是6.0版本)改为22
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" />

未完待续。。。


运行效果图:
图片描述


参考内容:
同样是6.0无法创建文件,启发了第一种解决思路
启发了第二种解决思路
请求权限插件
请求权限插件调用示例

来源:https://segmentfault.com/a/1190000004626450


智能推荐

我是一个IE浏览器线程

前情回顾: 我是一个explorer的线程 我是一个杀毒软件线程   我叫小张,是一个浏览器公司的线程,我们公司的名字叫Internet Explorer,大家都简称我们叫IE,公司负责的业务是向人类提供网页浏览服务。   可能你们也听说了,自从那个Firefox公司和Chrome公司成立以来,抢走了我们不少市场份额。不过呢,瘦死的骆驼比马大,我们凭借和政府特殊的关系,还是能搞...

浏览器一个HTTP请求的过程

浏览器一个请求的过程 当我们在浏览器地址栏输入 www.xx.com ,然后回车, 这个请求背后经历了什么?以下是个人理解,如有偏差,请纠正! 首先重新温习下网络模型: 七层结构(至顶向下):应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 client(浏览器) 与Server 通过HTTP协议通讯,HTTP协议属于”应用层协议”;HTTP基于TCP协议,TCP...

设计一个网络图片浏览器

大家在网上总会看到许多喜欢的图片,今天我们就设计一个网页图片浏览器。 首先呢,大家需要在网上找到图片,然后复制图片的网址,记住,是图片网址,而不是当前打开的网页的网址。比如下面这两幅图就分别是我在网页看到的图片,以及用图片浏览器查看时的截图: 好啦,先给大家代码: <ImageView     android:layout_width="fill_parent&...

Pyqt 一个简单的浏览器

使用QtWebKit 做一个简单的浏览器.   mybrowserUI.ui mainbrowser.py   效果:   网上一个截图: 给工具栏添加action:...

浏览器渲染的一个大致过程

按照渲染的时间顺序,流水线可分为如下几个子阶段: 构建 DOM 树、样式计算、布局阶段、分层、栅格化和显示。 渲染进程将 HTML 内容转换为能够读懂DOM 树结构。 渲染引擎将 CSS 样式表转化为浏览器可以理解的styleSheets,计算出 DOM 节点的样式。 创建布局树,并计算元素的布局信息。 对布局树进行分层,并生成分层树。 为每个图层生成绘制列表,并将其提交到合成线程。合成线程将图层...

猜你喜欢

浏览器请求一个网址的过程

首先通过DNS服务器把域名解析成IP地址,通过IP和子网掩码判断是否属于同一个子网 构造应用层请求http报文,传输层添加TCP/UDP头部,网络层添加- IP头部,数据链路层添加以太网协议头部 数据经过路由器、交换机转发,最终达到目标服务器,目标服务器同样解析数据,最终拿到http报文,按照对应的程序的逻辑响应回去。...

Brave浏览器 —— 一个当下世界最快的浏览器

给大家安利一个当前世界上最快的新浏览器 ,Brave狮子王浏览器! 如果你经常浏览网页,你一定能体会到打开一个网页比寻常时候快了几秒钟是怎样一种体验,一个优秀的浏览器不仅能为你带来流畅的体验,还能为你节约一定的时间。 而且他最爽的一点是超级强力的反 tracking,反 cookie 和反 ads。最大化保护隐私!   一直以来我都是chrome浏览器的粉丝,因为chrome的极速还有他...

redis中的hash扩容渐进式rehash过程

背景: redis字典(hash表)当数据越来越多的时候,就会发生扩容,也就是rehash 对比:java中的hashmap,当数据数量达到阈值的时候(0.75),就会发生rehash,hash表长度变为原来的二倍,将原hash表数据全部重新计算hash地址,重新分配位置,达到rehash目的 redis中的hash表采用的是渐进式hash的方式: 1、redis字典(hash表)底层有...

不同系统下的回车\r和换行\n,及其历史

2019独角兽企业重金招聘Python工程师标准>>>      我们平时按下键盘上的‘回车键’,就能实现回车换行【我们在屏幕上所看到的就是光标移到了下一行的开头位置!!ps:不讨论软件实现的特殊功能,如word里的回车智能缩进】。因此对这个按键更准确说应该叫做‘回车换行键’ 就且将这种将光标移到下行开...

windows操作系统,python环境下django的自动安装

首先,在Windows操作系统下安装python,完成python环境的搭建。(我看有的博客需要配置环境变量,其实不必要,因为我们在安装的时候只要勾选如下图所示即可避免不必要的麻烦) 第二步,使用快捷键windows+R或者点击如下图所示,之后点击运行 在其中输入cmd即可进入dos命令。 第三步,输入以下命令 就会自动安装,等待安装完成即可。 第四步,检测django是否安装成功,如果出现如下图...

问答精选

How to get the sum of rows using a vector and the make the result in a column

I have a dataframe and i want to calculate the sum of variables present in a vector in every row and make the sum in other variable after i want the name of new variable created to be from the name of...

Call a custom class in zend framework

I have a very rough project that done partially in zend framework (not ZF2). The 'application', 'library' and 'public' folders are on the same root. Now i need to create a library 'Anil' in the 'libra...

Hide Some Of The Categories In Magento?

I want to hide some of the categories from magento home page. I have created some categories like New Arrivals, Special Offer Which I would like to show in some different way may be in left panel or r...

Reading an internal file in Android Studio

I am writing to an internal file in Android Studio The code lets me write lines of data split with commas. I am able to then go to another activity and read it all out at once. However I want to be ab...

Rails Acts_as_votable Gem Like/Unlike Buttons with Ajax

I'm new to Ruby On Rails, I used the acts_as_votable gem to create Like and Unlike Buttons to make Users like and unlike Posts but I can't make them change from Like to Unlike (and viceversa) and upda...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答