Создание файлов.nomedia с помощью Storage Access Framework / SD

Я использую 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 вместо точечного файла. Я поигрался с несколькими разными типами пантомимы в диапазоне application/*, но потом файл вообще не создавался. Рад за любые указатели:)

3 ответа

И нашел это. Использование любого типа пользовательского пантомимы, такого как "thisis/awesome", кажется, работает нормально.

Немного поздно для ответа, но я бы предложил что-то вроде:

      new File(getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_MUSIC), ".nomedia").createNewFile();

«application/octet-stream» работает нормально. Это тип пантомимы по умолчанию для случаев, когда что-то более конкретное не применяется.

Другие вопросы по тегам