File.listFiles returns null 在不应该的时候

File.listFiles returns null when it shouldn't

我正在尝试获取存在于 Phone 图片文件夹(内部存储,未插入 SDCard)中的文件列表:

 File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
 File[] files = file.listFiles();

但文件值始终为空。 我还将此添加到 AndroidManifest.xml

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

任何想法将不胜感激,提前致谢。

它 returns null 因为 Environment.getExternalStoragePublicDirectory will/is 应该处理来自 SD 卡等外部存储的文件..因为你说没有插入 SD 卡

如果您的目标是 Android SDK >=23,您需要在 run-time 获得许可。

https://developer.android.com/training/permissions/requesting.html

正如 Abhishek Aryan 所建议的,我正在使用 Android SDK >=23 所以我必须使用代码获得权限:

  boolean grantedAll = ContextCompat.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
if (!grantedAll)
   {
     ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
            REQUEST_PERMISSIONS);
   }