android - 从用户图库中隐藏相机图像

标签 android image file

您好,我正在尝试让用户无法访问从我的应用程序捕获的图像。首先,我尝试将这些图像保存到内部存储器,但没有用。然后我尝试使用“。”隐藏它们。文件夹名称前面。我不确定正确的方法是什么。我还尝试创建一个名为 .nomedia 的文件来绕过媒体扫描器。我对执行此操作的正确方法感到非常困惑。这是我的代码:

  public String getImageUri(Context inContext, Bitmap inImage) {
    /* *//*  ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, ".title", null);
    return Uri.parse(path);*//*
     */

    File file = new File(Environment.getExternalStorageDirectory()
            + File.separator + "/.myFolder");
    file.mkdirs();
    File mFile = new File(Environment.getExternalStorageDirectory()
            + File.separator + "/.nomedia");
     mFile.mkdirs();
    FileOutputStream fOut = null;
    try {
        fOut = new FileOutputStream(file);
        inImage.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
        fOut.flush();
        fOut.close();
       uri =   MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return uri;

}

如果我使用 file.mkdirs() 我得到 filenotfoundexception。如果我删除该行,我不会收到任何错误,但我的 uri 为空。

上述函数是否也返回文件路径?稍后我需要文件路径和 uri。任何帮助表示赞赏。

最佳答案

我想您不必添加其他扩展程序或其他东西,只需将它们保存在您应用程序的外部缓存目录中,图库应用程序将无法读取您的私有(private)目录,除非您通知它们。

所以将您的相机图像存储在这里,没有图库应用程序可以检测到它。

context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);

示例代码

 public static File createPictureFile(Context context) throws IOException {
        Locale locale = Locale.getDefault();
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", locale).format(new Date());
        String fileName = "JPEG_" + timeStamp + "_";
        // Store in normal camera directory
        File storageDir = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        return File.createTempFile(fileName, ".jpg", storageDir);
    }

关于android - 从用户图库中隐藏相机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49767898/

相关文章:

html - 根据设置的像素边距,使用窗口调整图像大小?

java - Java 中的 "Scanner.nextLine()"会跳过,"NoLineFound"-Exception

javascript - 我无法使用 Canvas 从 blob URL 中裁剪图像

java - 尝试访问 android 中 boolean 值的共享首选项时出现运行时异常

Android 接口(interface)与以太网连接

java - 从另一个 View 更改 View 的尺寸

image - https/ssl 页面上的纯 http 图像 = 警告

image - 将图像上传到 S3,然后在 node.js 中调整大小

android - 在 Android 中通过 Intent 限制可选择的文件类型

android - getContactsFromFirebase() 方法返回一个空列表