Android。在哪里保存下载的图像?

时间:2014-08-09 07:18:37

标签: java android sqlite

在我的应用程序中,我在drawable文件夹中有几个图像。这使得apk变得更大。现在我已经将它们上传到我的Google驱动器中,当用户连接到互联网时,它将从驱动器下载该图像。在哪里保存下载的图像?在外部存储,数据库或其他地方?我希望用户无法删除该图像。

2 个答案:

答案 0 :(得分:2)

  

我希望用户无法删除该图片

你真的不能这样做。除非用户选择图片,否则图片不在此处,为什么您不想让用户删除它们?在这种情况下,您将再次下载或要求用户选择。正常的“缓存”方案。更不用说你实际上无法保护这些图像,因为用户可以随时清除应用程序数据(包括数据库和内部存储)。

答案 1 :(得分:2)

您可以将它们存储在内置手机存储器中。

保存图像

private String saveToInternalSorage(Bitmap bitmapImage){
        ContextWrapper cw = new ContextWrapper(getApplicationContext());
         // path to /data/data/yourapp/app_data/imageDir
        File directory = cw.getDir("youDirName", Context.MODE_PRIVATE);
        // Create imageDir
        File mypath=new File(directory,"img.jpg");

        FileOutputStream fos = null;
        try {           

            fos = new FileOutputStream(mypath);

       // Use the compress method on the BitMap object to write image to the OutputStream
            bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return directory.getAbsolutePath();
    }

访问存储的文件

private void loadImageFromStorage(String path)
{

    try {
        File f = new File(path, "img.jpg");
        Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
        // here is the retrieved image in b
    } 
    catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    }

}

编辑

您可以直接在设备的内部存储上保存文件。默认情况下,保存到内部存储的文件对应用程序是私有的,而其他应用程序无法访问它们(用户也无法访问)。当用户卸载您的应用程序时,将删除这些文件。

了解更多信息Internal Storage