2014-01-27 69 views
0

我做了一個測驗應用程序,我已經存儲在資產文件夾中的圖像說assets/pictures.I檢索圖像從資產文件夾使用AssetsManager.But後,我添加更多的圖像資產文件夾我發現應用程序不會從資產文件夾中獲取更新的圖像,除非我卸載了以前的應用程序。我還了解到,它不可能更新資產文件夾,除非我卸載舊的應用程序。我正確嗎?我想知道是否有可能將資產文件夾圖像添加到數據庫,並使用數據庫將圖像檢索到應用程序?當我發佈我的應用程序的更新版本時,我的新圖像文件是否會顯示?如果是這樣?解決方案更新資產文件夾

這是我使用RAD從資產文件夾

String[] getImagesFromAssets() { 
    AssetManager assetManager = getAssets(); 
    String[] img_files = null; 
    try { 
     // img_files = getAssets().list("pictures"); 
     img_files = assetManager.list("pictures"); 

    } catch (IOException ex) { 
     Logger.getLogger(GameActivity.class 
       .getName()).log(Level.SEVERE, null, ex); 
    } 
    return img_files; 


} 

void loadImage(String name) { 
    AssetManager assetManager = getAssets(); 
     System.out.println("File name => "+name); 
    InputStream in = null; 
    OutputStream out = null; 
    try { 
     in = assetManager.open("pictures/"+name); // if files resides inside the "Files" directory itself 
     out = new FileOutputStream(Environment.getExternalStorageDirectory() +"/" +"pictures/"+ name); 
     copyFile(in, out); 
     in.close(); 
     in = null; 
     out.flush(); 
     out.close(); 
     out = null; 
     Drawable d=Drawable.createFromPath(Environment.getExternalStorageDirectory() +"/" +"pictures/" + name); 
     image.setImageDrawable(d); 
     //Drawable d = Drawable.createFromStream(in, null); 
    //image.setImageDrawable(d); 
    } catch(Exception e) { 
     Log.e("tag", e.getMessage()); 
    }  


} 

private void copyFile(InputStream in, OutputStream out) throws IOException { 
byte[] buffer = new byte[1024]; 
int read; 
while((read = in.read(buffer)) != -1){ 
    out.write(buffer, 0, read); 
} 

    } 
+0

你不能在Assets文件夾中插入任何東西,所以如果你想存儲圖片,你應該保存在SDCARD – Luc

+0

創建一個webservice將最適合你的需求。 – Vigbyor

+0

@JackDuong我導出我的文件保存在資產文件夾到SD卡文件夾,並試圖從那裏檢索,但是當我更進一步更多的圖像資產文件夾我沒有在SD卡上找到 –

回答

2

的資產文件夾是隻讀的應用程序構建時間資源。一旦在APK中指定了這些文件,它們就不能在運行時更改。您將需要使用本地存儲來處理應用程序創建的新文件。

+1

我明白了。這就是爲什麼我導出我的文件到SD卡的位置,並從那裏檢索,但是當我添加新的圖像資產文件夾,我不覺得要導出。 –

+0

你能否給我一個解決方案如何讓它像你說的那樣完成?如果是這樣,我添加的新圖像文件將顯示在應用程序上? –

+0

您的應用需要將資產文件夾中的原始(只讀)文件與新創建的文件分開,並以不同方式對待它們。您不需要將您的資產內容複製到SD卡。您尚未分享任何代碼,因此我們無法看到您正在做的事情而無法進一步評論。 – BitBank

相關問題