Android File.listFiles()返回null问题
File.listFiles()返回null可能原因是没读取sdcard权限(READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE)。
system/private-app默认都有权限,system/app某些系统模式下初始化后没权限,系统重启后有权限,第三方app的权限大部分是询问。
使用ContextCompat.checkSelfPermission检查是否有权限,使用ActivityCompat.requestPermissions申请权限。
public class MainActivity extends AppCompatActivity {private final static String PATH = Environment.getExternalStorageDirectory().getPath();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (isStoragePermissionGranted()) {File directory = new File(PATH);File[] files = directory.listFiles();Log.i("juno", PATH + "files : " + (files == null ? null : files.length));}}public boolean isStoragePermissionGranted() {if (Build.VERSION.SDK_INT >= 23) {final Context context = getApplicationContext();int readPermissionCheck = ContextCompat.checkSelfPermission(context,Manifest.permission.READ_EXTERNAL_STORAGE);int writePermissionCheck = ContextCompat.checkSelfPermission(context,Manifest.permission.WRITE_EXTERNAL_STORAGE);if (readPermissionCheck == PackageManager.PERMISSION_GRANTED && writePermissionCheck == PackageManager.PERMISSION_GRANTED) {Log.v("juno", "Permission is granted");return true;} else {Log.v("juno", "Permission is revoked");ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);return false;}} else { //permission is automatically granted on sdk<23 upon installationLog.v("juno", "Permission is granted");return true;}}@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);Log.v("juno","onRequestPermissionsResult requestCode : " + requestCode+ " Permission: " + permissions[0] + " was " + grantResults[0]+ " Permission: " + permissions[1] + " was " + grantResults[1]);if(grantResults[0]== PackageManager.PERMISSION_GRANTED){//resume tasks needing this permissionFile directory = new File(PATH);File[] files = directory.listFiles();Log.i("juno", "After PERMISSION_GRANTED files : " + (files == null ? null : files.length));}}
}
Android File.listFiles()返回null问题相关推荐
- File.listFiles()返回null
问题描述: File.listFiles()返回null 这几天Android Studio 用的是3.6.3,新项目使用一个原有的获取Android文件列表的工具类,说啥也不显示,同样的工具类,其他 ...
- Android 10 SDK 29 使用listFiles返回null空值的原因
Android 10 SDK 29 使用listFiles返回null空值的原因 Android下使用listFiles()获得的返回值为null. 很早很早以前遇到过这个问题,大概还是安卓5.0左右 ...
- android getChildAt(index)返回null问题解决方法
android getChildAt(index)返回null问题解决方法 参考文章: (1)android getChildAt(index)返回null问题解决方法 (2)https://www. ...
- storage/emulated/0路径下的File.listFiles返回值为null
回值为null 前言 为了获取Android手机中某个文件夹下的所有文件夹或文件,我们利用File类的listFiles方法,但是,有些文件路径下明明有子文件,可是该方法总是返回null值.比如And ...
- listFiles返回null
代码如下: File file = new File(filePath); File[] childFiles = file.listFiles(); filepath是有值的,但是childFile ...
- android file.renameto 不成功,android – File.renameTo()返回true,但文件尚未重命名
我正在尝试为我的录音机创建一个文件,但是这个文件不断获得一个随机名称.因为这很难处理,所以我希望在使用更有意义的名称创建文件后重命名该文件. 但是,即使renameTo返回true,该文件仍未重命名. ...
- java对File.listFiles()排序
java对File.listFiles()排序 觉得有用的话,欢迎一起讨论相互学习~ 转载地址:点击打开链接 最近公司要做文件打包 由于File.listFiles()返回的文件是无序的,但文件必须按 ...
- iOS 使用fopen返回null
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); ...
- Android 根目录listFiles()文件列表返回值为null
String dir = "/storage/emulated/0"; File f = new File(dir); Log.v("Files",f.exis ...
最新文章
- 2022-2028年中国钢轨探伤车行业市场研究及前瞻分析报告
- signature=dff897e1da6b42a8e9483e18ff19fcde,Vídeo Institucional: Ingresse1
- Flink从入门到精通100篇(一)-如何在Mac 上搭建 Flink环境并做简单测试
- 【攻防世界019】SignIn
- 回忆自己的大学四年得与失
- ARM处理器中“8位位图”
- 会话的清除与建立网络磁盘
- 低成本DIY视频预览遥控小车
- php 动态设置utf8,PHP对GB编码动态转UTF-8几种方法评测
- sys.dm_exec_query_stats的total_worker_time的单位是微秒还是毫秒
- bzoj4330:JSOI2012 爱之项链
- 信息学奥赛一本通 1942:【08NOIP普及组】ISBN号码 | OpenJudge NOI 1.7 29:ISBN号码 | 洛谷 P1055 [NOIP2008 普及组] ISBN 号码
- python map 多参数_python – multiprocessing.pool.map和带有两个参数的函数
- C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header“
- 在 Mac 上的 Keynote 讲演中如何更改共享演示文稿的设置?
- 单表60亿记录等大数据场景的MySQL优化和运维之道
- wince6.0添加组件_WINCE6.0添加对viewrs(PDF,Word,Execel和PowerPoint)支持
- opencv-python库的安装
- cesium绘制地图国/省/市/区边界线
- kubernetes更换IP地址重新初始化master节点
热门文章
- tomcat9-jenkins:insufficient free space available after evicting expired cache entries-consider
- Dom对象、JavaScript对象、jQuery对象区别
- 创建线程都有哪些方式?— Callable篇
- eclipse 安装 lombok插件
- Android开发启动未注册的activity,Hook使用demo
- jQuery基础,javascript
- 施乐700彩机服务器显示c4,施乐彩色数码复印机故障代码大全
- java amr 转mp3 报错_amr 转 MP3 报错it.sauronsoftware.jave.InputFormatException问
- oracle过滤器基础,示例过滤器表达式 (Oracle Solaris Studio 12.2:性能分析器)
- springboot, thymeleaf 教你快速搭建网站