Android: 检索所有图像目录
Android: Retrieve all image directories
我正在尝试查找 Android 设备上包含图像(内部和外部存储)的所有目录。
基本上,我尝试获取本机图库应用程序中列出的所有目录
例如:
- 所有图片
- 下载量
- 我的最爱
- Whatsapp 图片
...
如何做到这一点?我认为它与 MediaStorage.Images.Media 等有关,但是那里的文档不是很有帮助,而且很多 google 搜索也没有帮助。
您可以使用此代码在存储中查找图片文件夹 -
private ArrayList<File> fileList = new ArrayList<File>();
...
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].getName().endsWith(".png")
|| listFile[i].getName().endsWith(".jpg")
|| listFile[i].getName().endsWith(".jpeg")
|| listFile[i].getName().endsWith(".gif"))
{
String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/'));
fileList.add(temp);
}
}
}
return fileList;
}
然后你可以这样调用ArrayList
-
File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
getFile(root);
for (int i = 0; i < fileList.size(); i++) {
String stringFile = fileList.get(i).getName();
Do whatever you want to do with each filename here...
}
感谢@BlazingFire,他没有完全回答我的问题,但提供了一些我可以使用的代码,现在有了我想要的结果:
public ArrayList<String> getFile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (File file : listFile) {
if (file.isDirectory()) {
getFile(file);
}
else {
if (file.getName().endsWith(".png")
|| file.getName().endsWith(".jpg")
|| file.getName().endsWith(".jpeg")
|| file.getName().endsWith(".gif")
|| file.getName().endsWith(".bmp")
|| file.getName().endsWith(".webp"))
{
String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/'));
if (!fileList.contains(temp))
fileList.add(temp);
}
}
}
}
return fileList;
}
它仅添加图像的父目录,并且仅在尚未添加图像的情况下添加。我还包括 .bmp 和 .webp 作为有效的图像文件扩展名
我正在尝试查找 Android 设备上包含图像(内部和外部存储)的所有目录。
基本上,我尝试获取本机图库应用程序中列出的所有目录
例如:
- 所有图片
- 下载量
- 我的最爱
- Whatsapp 图片
...
如何做到这一点?我认为它与 MediaStorage.Images.Media 等有关,但是那里的文档不是很有帮助,而且很多 google 搜索也没有帮助。
您可以使用此代码在存储中查找图片文件夹 -
private ArrayList<File> fileList = new ArrayList<File>();
...
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].getName().endsWith(".png")
|| listFile[i].getName().endsWith(".jpg")
|| listFile[i].getName().endsWith(".jpeg")
|| listFile[i].getName().endsWith(".gif"))
{
String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/'));
fileList.add(temp);
}
}
}
return fileList;
}
然后你可以这样调用ArrayList
-
File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
getFile(root);
for (int i = 0; i < fileList.size(); i++) {
String stringFile = fileList.get(i).getName();
Do whatever you want to do with each filename here...
}
感谢@BlazingFire,他没有完全回答我的问题,但提供了一些我可以使用的代码,现在有了我想要的结果:
public ArrayList<String> getFile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (File file : listFile) {
if (file.isDirectory()) {
getFile(file);
}
else {
if (file.getName().endsWith(".png")
|| file.getName().endsWith(".jpg")
|| file.getName().endsWith(".jpeg")
|| file.getName().endsWith(".gif")
|| file.getName().endsWith(".bmp")
|| file.getName().endsWith(".webp"))
{
String temp = file.getPath().substring(0, file.getPath().lastIndexOf('/'));
if (!fileList.contains(temp))
fileList.add(temp);
}
}
}
}
return fileList;
}
它仅添加图像的父目录,并且仅在尚未添加图像的情况下添加。我还包括 .bmp 和 .webp 作为有效的图像文件扩展名