2010-10-16 88 views
4

我有一個應用程序需要從SD卡上的應用程序創建的文件夾中讀取圖像(sdcard /「foldername」/「filename.jpg」。我不知道什麼名稱文件是因爲用戶指定文件的名稱,我需要從文件夾中讀取圖像,並創建類似於默認圖像查看器。我想先讀取它們到網格視圖中,但1)無法弄清楚如何動態讀取它們從一個文件夾2)我將如何實現像默認查看器的圖像選項?如果有一種方法可以打開某個文件夾的默認查看器,這將有所幫助。任何輸入都會令人驚奇的在一段時間內工作。 感謝SD卡上的文件夾中的圖像

回答

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

這應該只返回包含圖像的目錄。希望這有助於一些!

相關問題