2014-10-30 69 views
1

我正在開發應用程序,該應用程序應顯示來自我的SD卡的所有圖像。這是庫的應用程序,但我不能讓它做它的Android 有點弱,只從我提路徑的圖像,如果我不提沒有圖像只是根的任何路徑目錄Android開發圖像庫路徑

String ExternalStorageDirectoryPath = Environment 
.getExternalStorageDirectory() 
.getAbsolutePath(); 
String targetPath = ExternalStorageDirectoryPath + "/dir"; 
File targetDirector = new File(targetPath); 
File[] files = targetDirector.listFiles(); 
for (File file : files){ 
myImageAdapter.add(file.getAbsolutePath()); 
+0

你的問題不清楚。請解釋一下這是什麼意思:「但是我不能讓它在Android上做得很弱,它只能從我提到的路徑中獲取圖像。」請解釋你正在做什麼,哪些不起作用,即準確地說明你正在尋找什麼。 – bhantol 2014-10-30 17:24:16

回答

2

看來你正試圖製作一個應用程序,顯示設備中的所有圖像,當前代碼僅顯示提及的目錄。

使用意圖搜索設備中可用的圖像類型文件。

Intent imageIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
imageIntent.addCategory(Intent.CATEGORY_OPENABLE); 
imageIntent.setType("image/*"); 
imageIntent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(imageIntent , READ_REQUEST_CODE); // set READ_REQUEST_CODE to 42 in your class 

在onActivityResult()方法中處理結果。

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) { 

     Uri uri = null; 
     if (data != null) { 
      uri = data.getData(); 
      Log.i(TAG, "Uri: " + uri.toString()); 
      showImage(uri); 
     } 
} 
0

有了這個代碼兩行,你會選擇圖片保存到默認的庫目錄:

File picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
File[] listFiles = picturesDirectory.listFiles(); 

如果你需要搜索到所有的SD卡使用這種遞歸方法:

public static void allFiles(File root, List<File> list){ 
    for (File node : root.listFiles()) 
    { 
     if (node.isDirectory()) 
      allFiles(node, list); 
     else list.add(node); 
    } 
} 

然後調用這樣的方法:

List<File> allSdCardFiles = new ArrayList<File>(); 
allFiles(Environment.getExternalStorageDirectory(), allSdCardFiles); 

/*now your list has all the sdcard files, use it like you want*/ 

無論如何,我認爲你明白這是一個非常繁重的操作,所以一定要確保你真的需要這個(之後你還必須檢查文件的擴展名以檢查它們是否爲圖像,因爲這種遞歸方法會返回所有的sdcard文件);

0

您可以使用此方法來獲取默認的庫路徑

private static String getDefaultGalleryPath() { 
    return Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_DCIM + "/"; 
} 

什麼是DIRECTORY_DCIM

將設備作爲相機安裝時的圖片和視頻的傳統位置。