【问题标题】:Camera directory null相机目录为空
【发布时间】:2016-11-30 18:31:16
【问题描述】:

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

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

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

/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

【问题讨论】:

  • 您是否检查了运行时权限?
  • 这解决了我的问题。我完全忘记了那些棉花糖的许可。非常感谢

标签: java android io


【解决方案1】:

发表我的评论作为答案。从 marshmallow 开始,您需要提供 Runtime permissions

有回调

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

告诉用户是否授予权限。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多