2

我正在使用 SAF,以便用户可以使用我的相机应用程序将视频存储在他们的外部 SD 卡甚至 USB 驱动器上。我不希望它们出现在画廊中,所以我需要创建一个 .nomedia 文件。

我目前正在使用此代码:

 mTreeUri = Uri.parse(treeUri);
        mPickedDir = DocumentFile.fromTreeUri(this, mTreeUri);
        if (treeUri != null) {
            final DocumentFile existingMediaFile = mPickedDir.findFile(".nomedia");
            if (existingMediaFile == null) {

                DocumentFile newFile = mPickedDir.createFile("text/plain", ".nomedia");
                if (newFile == null) {
                    return null;
                }
                OutputStream out = null;
                try {
                    out = getContentResolver().openOutputStream(newFile.getUri());
                    out.write("A long time ago...".getBytes());
                    out.close();
                } catch (IOException e) {
                    Log.d(TAG, "Nomedia", e);
                }

问题是 SAF 创建了一个名为 nomedia.txt 的文件,而不是 dotfile。我在 application/* 范围内使用了几种不同的 mime 类型,但是根本没有创建任何文件。很高兴任何指针:)

4

3 回答 3

1

并找到了它。使用任何类型的自定义 mime 类型,如“thisis/awesome”似乎都可以正常工作。

于 2015-09-06T09:18:18.393 回答
0

“应用程序/八位字节流”工作正常。对于不适用更具体的情况的情况,这是默认的 mime 类型。

于 2021-12-21T09:07:29.713 回答
0

答案有点晚了,但我建议如下:

new File(getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_MUSIC), ".nomedia").createNewFile();
于 2021-06-17T08:59:47.787 回答