2014-07-23 41 views
0

我internalstorage有一個圖像文件存儲:安卓draw.createfrompath返回null

"file:///storage/emulated/0/Download/pdfthumbnail5/helloworld.jpg" 

我有沒有問題,圖像查看器應用程序打開它,以便該文件沒有corrputed或無法讀取。

我想要做的是,我想繪製這張jpg作爲縮略圖在​​我的自定義列表視圖中,我有所有列表視圖邏輯工作正常(這不是關注這裏),每次當應用程序嘗試繪製圖像的縮略圖,它抱怨的圖像文件不存在了,我想檢查這種方法的價值:

private static Drawable getDrawableFromUrl(final String url) throws IOException { 
     if (url.contains("http")){ //when intent access available 
      return Drawable.createFromStream(((java.io.InputStream) new java.net.URL(url).getContent()), "name"); 
     } else { // when there is no internet access 
      return Drawable.createFromPath(url); 
     } 
    } 

,並返回我要繪製對象空對象.... 順便說一句,忽略第1部分if聲明請請,這是爲了當應用程序有互聯網接入,並且它直接從url中繪製時沒有問題的縮略圖。問題是,它不會從本地internalstorage jpg中繪製縮略圖。

請幫我看一下代碼示例。謝謝

+0

使用'context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)'而不是net.url,並追加文件夾/ fileName。 –

+0

return Drawable.createFromPath(((java.io.InputStream)context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS),「file:///storage/emulated/0/Download/pdfthumbnail5/helloworld.jpg」);你的意思是這樣的?你可以給我一個例子plz – seph

+0

這是用來獲取文件路徑,Environment.DIRECTORY_DOWNLOADS代表你保存文件的內部目錄/文件夾,現在只需在上面的代碼返回的路徑後附加pdfthumbnail5/helloworld.jpg,通過你想要的地方。 –

回答

1
private static Drawable getDrawableFromUrl(final String url, Context context) throws IOException { 
     if (url.contains("http")){ 
      return Drawable.createFromStream(((java.io.InputStream) new java.net.URL(url).getContent()), "name"); 
     } else { 
      return Drawable.createFromPath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/pdfthumbnail5/helloworld.jpg").toString()); 
     } 
    } 

作品!