java - 相机目录为空

标签 java android io

我在从我的 SD 卡读取图像路径 url 时遇到问题。

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

在我的手机上浏览图片我得到这个目录作为相机胶卷目录:

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

我输入 list 文件权限:

  <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

最佳答案

张贴我的评论作为答案。从 marshmallow 开始,您需要提供运行时权限

有回调

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

哪些告诉权限是由用户授予或未授予。

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

关于java - 相机目录为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40895664/

相关文章:

java - 构造ArrayAdaptor时出现Resources.NotFoundException

java - 如何滚动到 RecyclerView 的底部?滚动到位置不起作用

python - 将 NumPy 数组内容写入 Python 中的文件

java - Java 中用于在文件中写入对象的缓冲方法?

c - 我怎样才能让 program1 从 promram2 获取输入,而 program2 同时从终端获取输入?

java - 简单的框架跳过 SOAP 信封和 body

java - 应用程序如何知道它正在 Google AppEngine 上运行?

java - kafka java进程消耗太多内存

java - 如何编码要在我制作的应用程序中打开的相机?

android - 如何通过仅膨胀一次将相同的 View 多次添加到父级