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问题相关推荐

  1. File.listFiles()返回null

    问题描述: File.listFiles()返回null 这几天Android Studio 用的是3.6.3,新项目使用一个原有的获取Android文件列表的工具类,说啥也不显示,同样的工具类,其他 ...

  2. Android 10 SDK 29 使用listFiles返回null空值的原因

    Android 10 SDK 29 使用listFiles返回null空值的原因 Android下使用listFiles()获得的返回值为null. 很早很早以前遇到过这个问题,大概还是安卓5.0左右 ...

  3. android getChildAt(index)返回null问题解决方法

    android getChildAt(index)返回null问题解决方法 参考文章: (1)android getChildAt(index)返回null问题解决方法 (2)https://www. ...

  4. storage/emulated/0路径下的File.listFiles返回值为null

    回值为null 前言 为了获取Android手机中某个文件夹下的所有文件夹或文件,我们利用File类的listFiles方法,但是,有些文件路径下明明有子文件,可是该方法总是返回null值.比如And ...

  5. listFiles返回null

    代码如下: File file = new File(filePath); File[] childFiles = file.listFiles(); filepath是有值的,但是childFile ...

  6. android file.renameto 不成功,android – File.renameTo()返回true,但文件尚未重命名

    我正在尝试为我的录音机创建一个文件,但是这个文件不断获得一个随机名称.因为这很难处理,所以我希望在使用更有意义的名称创建文件后重命名该文件. 但是,即使renameTo返回true,该文件仍未重命名. ...

  7. java对File.listFiles()排序

    java对File.listFiles()排序 觉得有用的话,欢迎一起讨论相互学习~ 转载地址:点击打开链接 最近公司要做文件打包 由于File.listFiles()返回的文件是无序的,但文件必须按 ...

  8. iOS 使用fopen返回null

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES); ...

  9. Android 根目录listFiles()文件列表返回值为null

    String dir = "/storage/emulated/0"; File f = new File(dir); Log.v("Files",f.exis ...

最新文章

  1. 2022-2028年中国钢轨探伤车行业市场研究及前瞻分析报告
  2. signature=dff897e1da6b42a8e9483e18ff19fcde,Vídeo Institucional: Ingresse1
  3. Flink从入门到精通100篇(一)-如何在Mac 上搭建 Flink环境并做简单测试
  4. 【攻防世界019】SignIn
  5. 回忆自己的大学四年得与失
  6. ARM处理器中“8位位图”
  7. 会话的清除与建立网络磁盘
  8. 低成本DIY视频预览遥控小车
  9. php 动态设置utf8,PHP对GB编码动态转UTF-8几种方法评测
  10. sys.dm_exec_query_stats的total_worker_time的单位是微秒还是毫秒
  11. bzoj4330:JSOI2012 爱之项链
  12. 信息学奥赛一本通 1942:【08NOIP普及组】ISBN号码 | OpenJudge NOI 1.7 29:ISBN号码 | 洛谷 P1055 [NOIP2008 普及组] ISBN 号码
  13. python map 多参数_python – multiprocessing.pool.map和带有两个参数的函数
  14. C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header“
  15. 在 Mac 上的 Keynote 讲演中如何更改共享演示文稿的设置?
  16. 单表60亿记录等大数据场景的MySQL优化和运维之道
  17. wince6.0添加组件_WINCE6.0添加对viewrs(PDF,Word,Execel和PowerPoint)支持
  18. opencv-python库的安装
  19. cesium绘制地图国/省/市/区边界线
  20. kubernetes更换IP地址重新初始化master节点

热门文章

  1. tomcat9-jenkins:insufficient free space available after evicting expired cache entries-consider
  2. Dom对象、JavaScript对象、jQuery对象区别
  3. 创建线程都有哪些方式?— Callable篇
  4. eclipse 安装 lombok插件
  5. Android开发启动未注册的activity,Hook使用demo
  6. jQuery基础,javascript
  7. 施乐700彩机服务器显示c4,施乐彩色数码复印机故障代码大全
  8. java amr 转mp3 报错_amr 转 MP3 报错it.sauronsoftware.jave.InputFormatException问
  9. oracle过滤器基础,示例过滤器表达式 (Oracle Solaris Studio 12.2:性能分析器)
  10. springboot, thymeleaf 教你快速搭建网站