有没有办法存储图像,以便用户无法看到或删除它们?

时间:2016-09-02 05:43:55

标签: android image android-studio

我正在寻找一种在Android设备中存储图像的方法,用户无法看到或打开它们或无法删除它们。它背后的主要思想是我必须在聊天应用程序中使用图像作为聊天背景。 Whatsapp具有类似的功能,第一个背景图像保存在其他文件夹中,如果删除该图像,那么图像也会出现。我不知道Whatsapp如何处理。任何想法将不胜感激。感谢

3 个答案:

答案 0 :(得分:1)

三种可能的解决方案。

  • 您可以在共享偏好中保存图像和数据

  • 在sqlite数据库中。

  • 您还可以加密数据并将其存储在任何位置,并在将图像加载回应用时进行解密。

请记住,用户可以使用root权限访问前两种方法保存的数据。

编辑如果您想保持简单,只需创建一个名为Systemfiles的文件夹,然后使用名称"文件"保存图像。没有jpg / bmp / png等等。没有人会注意到。

答案 1 :(得分:1)

您可以尝试:

  1. 将图像保存到数据库中,但我不推荐它。
  2. 将图像保存到文件夹中,并在同一位置手动添加空文件名 .nomedia
  3. 使用您自己的图片格式,或压缩图片,或重命名它们,使它们看起来不喜欢图像文件。例如,将 pic01.jpg 更改为 data01.abc
  4. 这些会阻止您的图片显示在任何其他照片/ gallary APP上。

答案 2 :(得分:0)

以Base64格式保存图像,以便用户无法看到它。使用以下代码加密它。

file = Environment.getExternalStorageDirectory()
                        + "/SDCard/myimage.jpg";
Bitmap selectedImage =  BitmapFactory.decodeFile(file);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
String strBase64=Base64.encodeToString(byteArray, 0);

使用以下代码将其解密为位图并将其设置为imageview。

byte[] decodedString = Base64.decode(strBase64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
image.setImageBitmap(decodedByte);