更新Assets文件夹的解决方案

时间:2014-01-27 03:47:15

标签: android database assets

我正在制作一个测验应用程序,我已将图像存储在资产文件夹中说资产/图片。我使用AssetsManager从资源文件夹中检索图像。但是在我向资源文件夹添加更多图像后,我发现该应用程序未获取更新图像来自资产文件夹,除非我卸载以前的应用程序。我还了解到它是不可能更新资产文件夹,除非我卸载旧app.Am我是否正确?我想知道是否有可能将资源文件夹图像添加到数据库并使用数据库将图像检索到应用程序?当我发布我的应用程序的更新版本时,我的新图像文件是否会显示?如果是这样的话?

这是我从资产文件夹

中使用的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);
}

    }

1 个答案:

答案 0 :(得分:3)

Assets文件夹是一个构建时资源,对于Application是只读的。在APK中指定文件后,无法在运行时更改这些文件。您将需要使用本地存储来处理应用程序创建的新文件。