【问题标题】:How to create a hidden folder i.e .MyFolder [(dot)MyFolder] in DCIM directory (Scoped Storage) Android Q如何在 DCIM 目录(范围存储)Android Q 中创建隐藏文件夹,即 .MyFolder [(dot)MyFolder]
【发布时间】:2021-06-22 07:24:32
【问题描述】:

我想在 DCIM 目录中创建一个隐藏文件夹,即 .MyFolder [(dot)MyFolder]。这是我的代码:-

final String relativeLocation = Environment.DIRECTORY_DCIM+File.separator+".MyFolder/images";
        ContentValues contentValues = new ContentValues();
        contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME,positionOfPager+".jpeg");
        contentValues.put(MediaStore.MediaColumns.MIME_TYPE,"image/*");
        contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH,relativeLocation);
        imageUri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
        fos = (FileOutputStream) context.getContentResolver().openOutputStream(Objects.requireNonNull(imageUri));
        inImage.compress(Bitmap.CompressFormat.JPEG,100,fos);

这里的问题是一个文件夹是用连字符“_.MyFolder”创建的,即[(Hypen)(dot)MyFolder],因此该文件夹没有被隐藏。我的应用程序正在创建大量图像,我不想在图库中显示这些图像来打扰用户。请帮帮我 注意:- 我正在实现范围存储 android 11 的代码

【问题讨论】:

  • “我的应用程序正在创建很多图像,我不想在图库中显示这些图像来打扰用户”——然后将它们放入 getFilesDir()getExternalFilesDir()Context 上的方法) .
  • My app is creating lots of images which i dont want to show up in gallery 那么不要一开始就使用 MediaStore。但是,即使您可以使用 mkdir() 创建这样的“.hidden”文件夹并以旧方式将文件放入其中,MediaStore 也会很快扫描其中的这些文件。
  • 谢谢。现在我将图像存储在应用程序特定的文件夹中:)
  • 我也面临同样的问题。每当我创建时,它都会使用连字符“_.test”创建。
  • 能否在relativeLocation 行上放置一个调试点,并检查执行该行后设置的相对位置值是多少?

标签: java android file mediastore hidden-files


【解决方案1】:
File file = new File( 
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), ".MyFolder/images");

if ( ! file.existst() )
    if ( !file.mkdirs() )
         return;

在 10 和 11 上都可以使用此代码。

您还可以使用经典文件系统路径在此文件夹中创建文件。

不需要 MediaStore。更糟糕的是:一旦您使用 MediaStore,MediaStore 就会知道您的文件,因此会知道使用 MediaStore 列出文件的 Gallery 应用程序。

对于 Android Q 设备,将 android:requestLegacyExternalStorage="true" 添加到清单文件中的应用程序标记。

但是....这个隐藏文件夹的东西不会阻止媒体扫描仪在一段时间后扫描您的文件。此外,.nomedia 文件现在通常不会这样做。

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2020-08-27
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2017-05-09
    • 2020-02-27
    • 2012-03-01
    • 1970-01-01
    相关资源
    最近更新 更多