Изображения из папки на SD-карте - PullRequest
4 голосов
/ 16 октября 2010

У меня есть приложение, которое должно считывать изображения из папки, созданной приложением на SD-карте (sdcard / "foldername" / "filename.jpg". Я понятия не имею, какие имена файлов, потому что пользователь указывает имена файлов. Мне нужно прочитать изображения из папки и сделать что-то вроде средства просмотра изображений по умолчанию. Я думаю, сначала прочитать их в виде сетки, но 1) не могу понять, как динамически читать их из папки 2) как я бы реализовать параметры изображения, как по умолчанию для просмотра? Если бы был способ открыть средство просмотра по умолчанию в определенной папке, это помогло бы. любой вклад был бы удивительным, работая над этим некоторое время. Спасибо

1 Ответ

7 голосов
/ 16 октября 2010

Вот как вы можете получить список папок с карты памяти:

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);

Это должно возвращать только каталоги, которые содержат изображения. Надеюсь, это поможет некоторым!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...