我有一个应用程序,需要从SD卡上的应用程序创建的文件夹中读取图像(sdcard /"foldername"/"filename.jpg".我不知道文件的名称是什么,因为用户指定了名称我需要从文件夹中读取图像并制作类似默认图像查看器的内容.我想先将它们读入网格视图但1)无法弄清楚如何从文件夹中动态读取它们2)我将如何实现像默认查看器一样的图像选项?如果有办法在某个文件夹上打开默认查看器会有所帮助.任何输入都会令人惊讶地工作了一段时间.谢谢
以下是如何从存储卡中获取文件夹列表:
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);
}
Run Code Online (Sandbox Code Playgroud)
这段代码来自我的头脑,所以一些语法可能有些偏差,但一般的想法应该有效.您可以使用类似的东西将文件夹过滤到仅包含图像的文件夹:
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;
}
}
};
Run Code Online (Sandbox Code Playgroud)
然后,将第一个示例更改为:
File[] directories = file.listFiles(filterForImageFolders);
这应该只返回包含图像的目录.希望这有助于一些!
| 归档时间: |
|
| 查看次数: |
3837 次 |
| 最近记录: |