关于File(path).listFiles()在android7.0及以上版本运行返回null的问题【实测有效】
关于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.再把你改过的部分再改回原来的样子,依然可以正常运行不报错!
在*上面有个大神是这么解释的
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版本再改了回去,代码就顺利运行了。希望我的这个经验可以帮助到你们~~~
就这个问题,各位大佬有更好的解决方案还望不吝赐教!
上一篇: 咱俩结婚的理由
下一篇: 朱高煦对皇位有多执着?他的结局如何?