【问题标题】:Is there any way to store images so user can't see them or delete them?有什么方法可以存储图像以便用户看不到或删除它们?
【发布时间】:2023-03-26 14:35:01
【问题描述】:

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

【问题讨论】:

  • 它刚刚被重新下载。
  • 如果您将图像保存到 sdcard 中使用 dot before 文件夹名称和文件夹将被隐藏
  • @FrozenFire 会有很多图片,以后可能会出现OOM或延迟
  • @Enzokie 你的意思是每个聊天背景 whatsapp 在服务器上保存图像
  • @Jagjit Singh PrashantSharma 的方法也可以用于手机内存,而不仅仅是 SD 卡。

标签: android image android-studio


【解决方案1】:

三种可能的解决方案。

  • 您可以将图像和数据保存在共享首选项中

  • 在 sqlite 数据库中。

  • 您还可以加密数据并将其存储在任何地方并在将图像加载回应用程序时解密。

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

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

【讨论】:

    【解决方案2】:

    你可以试试:

    1. 将图像保存到数据库中,但我不推荐这样做。
    2. 将图像保存到文件夹中,并在同一位置手动添加一个空文件名.nomedia
    3. 使用您自己的图像格式,或压缩图像,或重命名它们,使它们看起来不像图像文件。例如,将 pic01.jpg 更改为 data01.abc

    这些将阻止您的图像显示在任何其他照片/图库 APP 上。

    【讨论】:

      【解决方案3】:

      以 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多