保存图像并复制SD卡中的所有图像

时间:2012-10-30 10:43:25

标签: android eclipse android-image

我有10张图片,想要将所有这些图像保存在Android应用程序内存中。因此,无论何时使用安装此应用程序,他都已经拥有了所有这些图像。

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

有什么办法吗?所以我会完成它。

请帮帮我

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您可以将文件保存在资产或资源文件夹中,此处我将文件保存在res / drawable /中,并在需要时将其复制到SD卡上。在下面的代码中我们首先检查文件是否不存在我们从drawable创建一个位图并将文件写入sdcard。

  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" />