我有一个应用程序需要从sdcard上的应用程序创建的文件夹中读取图像(sdcard /“foldername”/“filename.jpg”。我不知道文件的名称是什么,因为用户指定文件的名称。我需要从文件夹中读取图像并制作类似默认图像查看器的内容。我想先将它们读入网格视图但1)无法弄清楚如何从文件夹中动态读取它们2)如何我会像默认查看器一样实现图像选项吗?如果有办法在某个文件夹上打开默认查看器会有所帮助。 任何输入都会令人惊讶地工作了一段时间。 谢谢
答案 0 :(得分:7)
以下是如何从存储卡中获取文件夹列表:
String state = Environment.getExternalStorageState();
if(state.contentEquals(Environment.MEDIA_MOUNTED) || state.contentEquals(Environment.MEDIA_MOUNTED_READ_ONLY))
{
String homeDir = Environment.getExternalStorageDirectory();
File file = new File(homeDir);
File[] directories = file.listFiles();
}
else
{
Log.v("Error", "External Storage Unaccessible: " + state);
}
这段代码来自我的脑海,所以有些语法可能会有些偏差,但总体思路应该有效。您可以使用类似的方法将文件夹过滤到仅包含图像的文件夹:
FileFilter filterForImageFolders = new FileFilter()
{
public boolean accept(File folder)
{
try
{
//Checking only directories, since we are checking for files within
//a directory
if(folder.isDirectory())
{
File[] listOfFiles = folder.listFiles();
if (listOfFiles == null) return false;
//For each file in the directory...
for (File file : listOfFiles)
{
//Check if the extension is one of the supported filetypes
//imageExtensions is a String[] containing image filetypes (e.g. "png")
for (String ext : imageExtensions)
{
if (file.getName().endsWith("." + ext)) return true;
}
}
}
return false;
}
catch (SecurityException e)
{
Log.v("debug", "Access Denied");
return false;
}
}
};
然后,将第一个示例更改为:
File[] directories = file.listFiles(filterForImageFolders);
这应该只返回包含图像的目录。希望这有助于一些人!