2010-09-22 46 views
0

我正在使用Gallery3D代碼但希望它只顯示SD上的子文件夾中的圖像,而不是顯示存儲在其上的所有圖像中的圖像。要做到這一點,我試圖改變Uri from FilePath

public static final Uri STORAGE_URI = Images.Media.EXTERNAL_CONTENT_URI;

public static final Uri STORAGE_URI = Uri.fromFile(new File(ROOT_DIR));

其中 ​​

,但我想這是一個轉變content:// -uri到file:// -uri這可能是一個問題?

在任何情況下,它都不起作用:-(!而不是僅顯示ROOT_DIR-目錄及其子目錄中的圖像,它根本不顯示圖像(「圖庫爲空」)。在正確的方向,以什麼我做錯了嗎?

回答

0

我也(後下)詢問關於Android開發者谷歌集團和共識這個問題存在,與Gallery3D代碼目前的結構,我的目標ISN不可能,我將不得不將圖像源更改爲存儲圖像路徑的(自定義)數據庫。

0

編輯

我假設你指的是Open Source code for Gallery3D,而是不斷變化的內容提供商的URI STORAGE_URI,你看在ImageManager.java改變CAMERA_IMAGE_BUCKET_NAME和/或CAMERA_BUCKET_NAMELocalDataSource.java

我看到several places其中getExternalStorageDirectory()被提及。

老回答

嘗試使用withAppendedPath(Uri baseUri, String pathSegment)你的子目錄添加到URI。或許,這樣的事情會爲你工作:

Uri.withAppendedPath(Images.Media.EXTERNAL_CONTENT_URI, 
    Uri.encode("mySubDirectory")); 
+0

謝謝,Brian。不幸的是,這也不起作用。我只看到'withAppendedPath'與String一起用作路徑,例如'Uri u2 = Uri.withAppendedPath(u,「1」);'這使得u2:'content:// media/external/images/media/1',我不認爲實際的Uri編碼路徑是有效的基地的擴展 - Uri?我想我需要通過filepath篩選'MediaStore.Images.Media.DATA'-Column ......不知何故? – Nick 2010-09-25 19:25:49

+0

我曾建議使用'Uri.encode()',因爲'pathSegment'的文檔表示需要一個「編碼的路徑段來追加」。我用另一個建議編輯了我的答案。 – Brian 2010-09-25 22:37:58

+0

感謝您的編輯。我已經嘗試將攝像機存儲桶更改爲我的目錄(而不是將它放在'/ DCIM'處),但是這段代碼似乎只是處理相應攝像機文件夾中的攝像機標籤和圖標(即是否顯示一個「相機」 - 圖標或一個正常的「文件夾」 - 圖標)。 – Nick 2010-09-27 00:16:23

相關問題