开发者

Images from folder on sd card

开发者 https://www.devze.com 2023-01-20 00:58 出处:网络
I have an application that needs to read images from a folder created by the application on the sdcard(sdcard/\"foldername\"/\"filename.jpg\". I have no id开发者_开发知识库ea what the names of the fil

I have an application that needs to read images from a folder created by the application on the sdcard(sdcard/"foldername"/"filename.jpg". I have no id开发者_开发知识库ea what the names of the files are because the user specifies the names of the files. I need to read the images from the folder and make something like the default image viewer. Im thinking read them into a grid view first but 1) cant figure out how to dynamically read them from a folder 2) how would I implement the image options like the default viewer? If there was a way to open the default viewer on a certain folder that would help. any input would be amazing been working on it for a while. Thanks


Here's how you can get a list of folders off of the memory card:

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

This code is from the top of my head, so some syntax may be off a bit, but the general idea should work. You can use something like this to filter down the folders to only folders that contain images:

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

Then, change the first example to:

File[] directories = file.listFiles(filterForImageFolders);

That should return only directories that contain images. Hopefully this helps some!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号