File.listFiles在不应该返回null时返回null

时间:2017-02-09 10:10:33

标签: android filesystems android-permissions

我正在尝试使用此功能获取Phone Pictures文件夹中存在的文件列表(内部存储,未插入SDCard):

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

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

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

任何想法都会非常感谢,提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果您要定位Android SDK&gt; = 23,则需要在运行时获得权限。

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

答案 1 :(得分:0)

它返回null,因为Environment.getExternalStoragePublicDirectory将/应该处理来自外部存储器的文件,如SD卡..如果你说没有插入SD卡

答案 2 :(得分:0)

正如Abhishek Aryan所说,我使用Android SDK&gt; = 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);
   }