我在从我的 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/