当前位置: 移动技术网 > 移动技术>移动开发>Android > 关于File(path).listFiles()在android7.0及以上版本运行返回null的问题【实测有效】

关于File(path).listFiles()在android7.0及以上版本运行返回null的问题【实测有效】

2017年12月28日  | 移动技术网移动技术  | 我要评论

关于File(path).listFiles()在android7.0及以上版本运行返回null的问题【实测有效】。

解决方案1:

android6.0同一个权限组的任何一个权限被授权了,这个权限组的其他权限也自动被授权。但是在android7.0上并不适用

也就是以前在权限中只添加WRITE_EXTERNAL_STORAGE就默认打开了READ_EXTERNAL_STORAGE权限,但是到了android7.0及其以上的版本的时候,需要单独添加READ_EXTERNAL_STORAGE才可以读取内置存储内容。这里写图片描述

解决方案2:

这是一个神奇的办法!

1.打开build.gradle(Module:app)文件

2.修改其defaultConfig中的targetSdkVersion到22或者以下,如果你minSdkVersion就是22,建议先把minSdkVersion改为19,再把targetSdkVersion改为22,然后同步一下(Sync)

3.开始运行,你会惊喜的发现可以运行成功了

4.再把你改过的部分再改回原来的样子,依然可以正常运行不报错!

在stackoverflow上面有个大神是这么解释的

The big reason for not getting your permission nowadays is because your project has a targetSdkVersion of 23 or higher

For these permissions, not only does your targetSdkVersion 23+ app need to have the element(s), but you also have to ask for those permissions at runtime from the user on Android 6.0+ devices, using methods like checkSelfPermission() and requestPermissions().

As a temporary workaround, drop your targetSdkVersion below 23.

意思就是说在android6.0以上的版本中,你除了在AndroidManifest.xml中添加权限外,还应该动态的申请权限,使用checkSelfPermission()与requestPermissions()。其中checkSelfPermission()是自己写的函数,requestPermissions()是重写的函数,具体的内容网上有很多,我这里就不赘述了。

我在解决这个问题的时候,并没有在代码中添加requestPermissions(),只是看到了其最后一句,更改了一下目标sdk版本再改了回去,代码就顺利运行了。希望我的这个经验可以帮助到你们~~~

就这个问题,各位大佬有更好的解决方案还望不吝赐教!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网