在安装android应用程序上将图像从资产复制到SD卡

时间:2012-08-29 08:12:12

标签: android android-sdcard android-image android-assets

我应该在应用程序中显示一些图像,Q.是如何将我放在代码中的资源文件夹中的图像复制到用户的SC卡下的文件夹中,在手机上安装应用程序

2 个答案:

答案 0 :(得分:2)

试试这个,

private void copyAssets() {
    AssetManager assetManager = getAssets();
    String[] files = null;
    try {
        files = assetManager.list("");
    } catch (IOException e) {
        Log.e("tag", e.getMessage());
    }
    for(String filename : files) {
        InputStream in = null;
        OutputStream out = null;
        try {
          in = assetManager.open(filename);
          out = new FileOutputStream("/sdcard/" + filename);
          copyFile(in, out);
          in.close();
          in = null;
          out.flush();
          out.close();
          out = null;
        } 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);
    }
}

不要忘记在最明显的

中添加此权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

答案 1 :(得分:0)

所以我需要做一些类似的事情,除了所有文件,并在启动时为AOSP包。如果有人感兴趣的话,这是包的链接(参见AssetCopyReceiver.java)。

https://github.com/Paradopolis/AssetCopier/blob/master/src/com/paradopolis/assetcopier/AssetCopyReceiver.java

这会将sdcard下的所有文件复制到各自的位置,它也应该与子目录一起使用。它作为启动接收器工作,不适用于常规应用程序,因此需要修改但代码是相同的。当我从那里开始时,它基于第一个答案,并纠正了我发现的一些问题,因为我需要扩展它。