2014-01-27 3 views
0

Я делаю приложение для викторины, и у меня есть сохраненные изображения в папке с активами, скажем, активы/рисунки. Я извлекаю изображения из папки с ресурсами с помощью AssetsManager. Но после добавления нескольких изображений в папку с ресурсами я обнаружил, что приложение не извлекает обновленное изображение из папки с данными, если я не удалю предыдущее приложение. Я также узнал, что не удается обновить папку с ресурсами, если я не удалю старое приложение. Я исправлю? Я хотел бы узнать, можно ли добавить изображения папок в базу данных и использовать базу данных для извлечения изображений в приложение? Также будут показаны мои новые файлы изображений при выпуске обновленной версии моего приложения? Если да, то как?Решение для обновления папки «Активы»

Это то, что я использую, чтобы радиан из папки активов

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

Вы не можете вставить что-либо в папку «Активы», поэтому, если вы хотите сохранить изображение, вы должны сохранить его в SDCARD – Luc

+0

. Создание веб-сервиса будет лучше для вашего требования. – Vigbyor

+0

@JackDuong я экспортировал свои файлы, сохраненные в папке с ресурсами, в папку SD-карты и попытался извлечь из нее. Но когда я обновляю еще больше изображений в папку с ресурсами, я не нахожу это на SD-карте –

ответ

2

Папки активов является накоплением времени ресурса, который доступен только для чтения по применению. Как только файлы указаны в APK, они не могут быть изменены во время выполнения. Вам нужно будет использовать локальное хранилище для работы с новыми файлами, создаваемыми вашим приложением.

+1

Я понимаю. Вот почему я экспортировал свои файлы на место Sd-карты и извлекал оттуда, но когда я добавляю новые изображения в папку с ресурсами, я не нахожу их для экспорта. –

+0

Можете ли вы дать мне решение, как это сделать, как вы сказали? Если так, будут добавлены новые файлы изображений, которые я добавлю в приложение? –

+0

Ваше приложение должно отделять оригинальные (только для чтения) файлы в папке «Активы» от вновь созданных файлов и обрабатывать их по-разному. Вам не нужно копировать содержимое вашего контента на SD-карту. Вы не поделились никаким кодом, поэтому мы не можем комментировать дальше, не видя, что вы делаете. – BitBank

Смежные вопросы