Camera目录为null

时间:2016-11-30 18:31:17

标签: java android io

我从SD卡读取图片路径网页时遇到问题。

它总是返回此错误:尝试获取空数组的长度:尝试获取空数组的长度

在手机上浏览图像我将此目录作为相机胶卷目录:

/storage/emulated/0/DCIM/Camera/imageName

我输入了我的清单文件权限:

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

这是我的代码:

 public void processImages() {
    listOfImages = new ArrayList<>();

    Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

    if (isSDPresent) {


//returns same path -  /storage/emulated/0/DCIM/Camera/
        String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath()+"/Camera/";
        File f = new File(path);

        listOfImages = scanPhotos(f);

    } else {
        Toast.makeText(this, "sd not present", Toast.LENGTH_SHORT).show();
    }
}

public List<File> scanPhotos(File directory) {
    List<File> listOfPictures = new ArrayList<>();

//this returns null
        File[] files = directory.listFiles();
        for (File file : files
                ) {
            if (file.isDirectory() && !file.isHidden()) {
                listOfPictures.addAll(scanPhotos(file));
            } else {
                if (file.getName().endsWith(".jpg") || file.getName().endsWith(".jpeg") || file.getName().endsWith(".png")) {
                    listOfPictures.add(file);
                }
            }
        }

    return listOfPictures;
}

f.canRead() - returns false

1 个答案:

答案 0 :(得分:1)

发表评论作为答案。从 marshmallow 开始,您需要提供运行时permissions

有回调

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {}

告诉用户是否授予许可。

要添加请求权限,请使用此tutorial