之前开发4.0,5.0安卓项目没有出现过这种问题,没想到开发7.0出现了这样的问题,如图

Android6.0以上读写文件出现FileNotFoundException(Permission denied)

根据字面意思理解,找不到文件,权限不足,我赶紧看了下是不是忘了添加读写权限

Android6.0以上读写文件出现FileNotFoundException(Permission denied)

明明添加了读写权限,为什么还是报了文件找不到,权限不足的错误呢,没有办法,只能到处查看资料,整理发现,原来

android6.0以后,存在一些"敏感"权限,这时只能应用运行时申请权限,并且只有用户允许的情况下才能授予权限,对于用户来说确实提升了安全性。

回归重点:

如何解决这个权限问题

首先,在你需要进行读写文件操作之前,添加一段代码,用于申请权限,如下:

Android6.0以上读写文件出现FileNotFoundException(Permission denied)

简单来看一下他的源码

Android6.0以上读写文件出现FileNotFoundException(Permission denied)

注释太多,简单解释一下:

请求要授予此应用程序的权限,这些权限必须在你的manifest中被申请,上面还有运行时申请权限的网页示例感兴趣的可以去看

一下。参数分别是activity、需要被申请的权限,不能为null或者为空、请求码,在该方法中进行了SDK判断,只有大于23也就是

6.0才会去申请权限,低版本只会走onRequestPermissionsResult方法让你知道你拥有权限。

由于我是用模拟器运行的,申请权限运行之后如下图所示

Android6.0以上读写文件出现FileNotFoundException(Permission denied)

选择允许就可以正常的进行读写啦!

当然,以上只是代码解决方法,你也可以在设置里面找到你的应用,权限,开启存储空间权限。

遇事勿慌,多查资料。

相关文章: