列出 SD 卡中的所有图像

列出 SD 卡中的所有图像

问题描述:

我正在开发 android Gallery 应用程序.我正在从 sd 卡中的文件夹中获取图像并将其显示在网格视图上,如下所示

Hi I am developing android Gallery app . I am fetching the images from a folder in sd card and displaying it on a grid view as below

public static ArrayList<String> getFilePaths(){
    ArrayList<String> filePaths = new ArrayList<String>();
    File directory = new File(android.os.Environment.getExternalStorageDirectory() 
             + File.separator + AppConstant.PHOTO_ALBUM);

    // check for directory
    if (directory.isDirectory()){
        // getting list of file paths
        File[] listFiles = directory.listFiles();

        // Check for count
        if (listFiles.length > 0) {
            for (int i = 0; i < listFiles.length; i++){

                String filePath = listFiles[i].getAbsolutePath();

                if (IsSupportedFile(filePath)){
                    // Add image path to array list
                    filePaths.add(filePath);
                }
            }
        }else{
            // image directory is empty
            Toast.makeText(_context,
                    AppConstant.PHOTO_ALBUM
                    + " is empty. Please load some images in it !",
                    Toast.LENGTH_LONG).show();
        }

    } 
    return filePaths;
}

//fetching all image paths
 imagePaths = utils.getFilePaths();
 adapter = new GridViewImageAdapter(GridViewActivity.this, imagePaths, columnWidth);
 // setting grid view adapter
 gridView.setAdapter(adapter);

我想显示 SD 卡中的所有图像,而不仅仅是在指定文件夹中.我不知道该怎么做.

I want to display all the images from SD card not only in a specified folder. I am not sure How to do it.

请帮忙.谢谢!

使用此方法.这将返回 sdcard 中所有图像路径的列表,如果您不想要任何指定的图像扩展名,您可以将其过滤掉.

Use this Method. This will return list all the images path inside your sdcard, and if you don't want any specified image extension you can filter that out.

public ArrayList<String> getFilePaths()
    {


        Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
        String[] projection = {MediaStore.Images.ImageColumns.DATA}; 
        Cursor c = null;
        SortedSet<String> dirList = new TreeSet<String>();
        ArrayList<String> resultIAV = new ArrayList<String>();

         String[] directories = null; 
        if (u != null) 
        { 
            c = managedQuery(u, projection, null, null, null); 
        } 

        if ((c != null) && (c.moveToFirst())) 
        { 
            do 
            {
                String tempDir = c.getString(0);
                tempDir = tempDir.substring(0, tempDir.lastIndexOf("/"));
                try{
                    dirList.add(tempDir);
                }
                catch(Exception e)
                {

                }
            } 
            while (c.moveToNext());
            directories = new String[dirList.size()];
            dirList.toArray(directories);

        }

        for(int i=0;i<dirList.size();i++)
        {
            File imageDir = new File(directories[i]);
            File[] imageList = imageDir.listFiles();
            if(imageList == null)
                continue;
            for (File imagePath : imageList) { 
                try {

                        if(imagePath.isDirectory())
                        {
                            imageList = imagePath.listFiles();

                        }
                        if ( imagePath.getName().contains(".jpg")|| imagePath.getName().contains(".JPG")  
                                || imagePath.getName().contains(".jpeg")|| imagePath.getName().contains(".JPEG")                                    
                                || imagePath.getName().contains(".png") || imagePath.getName().contains(".PNG")
                                || imagePath.getName().contains(".gif") || imagePath.getName().contains(".GIF")
                                || imagePath.getName().contains(".bmp") || imagePath.getName().contains(".BMP")                         
        )
                        {



                            String path= imagePath.getAbsolutePath();
                        resultIAV.add(path);

                        }
                    }
            //  }
            catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return resultIAV;


    }