2012-10-30 44 views
1

我有10个图像,并希望将所有图像保存在android应用程序内存中。所以无论何时使用安装这个应用程序,他已经拥有了这些所有图像。保存图像并复制SD卡中的所有图像

我硬编码很多次,没有得到很好的回应。

有什么办法。所以我会做到这一点。

请帮我

+0

使用资产文件夹可能会有所帮助。 – Ashwani

+0

我是否需要在资产中创建任何子文件夹或直接复制所有图像 –

+0

创建资产文件夹,请确保此文件夹与res/src/ – dumbfingers

回答

1

将所有图片存储在APK的资产文件夹中。安装完成后,扫描内部存储器以查看是否有需要的图像。如果没有,请将其复制到那里。这样,即使用户清除了应用程序的数据,也可以将其复制回来。另一件好事是用户也不会了解它,所以它是一种很好的用户体验。唯一的事情是你的APK的大小会增加,所以应该进行相应的管理。

尝试下面的代码

InputStream inputStream = getAssets().open("yourfile.jpg"); 
      OutputStream out = new FileOutputStream(new File("/sdcard/yourfile.jpg")); 
      int read = 0; 
      byte[] bytes = new byte[1024]; 
      while ((read = inputStream.read(bytes)) != -1) { 
       out.write(bytes, 0, read); 
      } 
      inputStream.close(); 
      out.flush(); 
      out.close(); 
+0

位于同一级别,我正在使用它。 http://stackoverflow.com/questions/4447477/android-how-to-copy-files-in-assets-to-sdcard的第一个答案,但它给了我例外“未能复制驴文件:图像”。我需要改变这里files = assetManager.list(“”); ..我简单地复制ASSESTS文件夹中的所有文件 –

+0

您必须简单地复制图像,然后使用文件流将其复制出来。 AssetManager无法区分不同的文件,因为它是一切数据流。所以请尽量遵循相同的步骤 –

0

你可以在你的资产或资源文件夹中的文件,在这里我一直在res /绘制的文件/文件并复制它们的SD卡,当我需要。在下面的代码中,我们首先检查文件是否存在,然后我们从drawable创建一个位图并将文件写入到SD卡中。

File file = new File(pathExt+"/Pictures/", "s1.png"); 
       if(isSDCARDMounted()){ 
       if (!file.exists()) { 
        bmp = BitmapFactory.decodeResource(getResources(), 
          R.drawable.s1); 

        try { 

         FileOutputStream outStream = new FileOutputStream(file); 
         bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
         outStream.flush(); 
         outStream.close(); 
        } catch (FileNotFoundException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
         } 
} 

isSDCARDMounted:功能,如果卡被安装或不检查

PATHEXT:外部存储目录路径

确保选中有权对外部存储

写设置变量
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />