Android 10 Создать запись медиастор с отображаемым именем, содержащим точку "." infront EX: .nomedia - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь создать запись в медиастор с точкой впереди, как гласит цитата.

Проблема в том, что когда я пытаюсь это сделать, он ставит подчеркивание "_" перед точкой, это не хорошо для моего варианта использования, так как я пытаюсь создать файл ".nomedia", поэтому mediascanner будет игнорировать изображения в папке. Насколько мне известно, простое создание файла - это не вариант с новыми изменениями в области хранения. Я не хочу использовать параметр android: requestLegacyExternalStorage = "true" в манифесте, так как я хочу, чтобы это было доказательством на будущее. Вот что я делаю до сих пор.

@RequiresApi(api = Build.VERSION_CODES.Q)
private void addNoMediaFileVersion29()
{
    try
    {
        Log.d(LOG_TAG, "addNoMediaFileVersion29 - called: ");
        ContentValues values = new ContentValues(3);
        values.put(MediaStore.Images.Media.TITLE, ".nomedia");
        values.put(MediaStore.Images.Media.DISPLAY_NAME, ".nomedia");
        values.put(MediaStore.Images.Media.RELATIVE_PATH, "Pictures/" + context.getResources().getString(R.string.app_name) + "/");
        Uri destination = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

        if (destination != null)
        {
            Log.d(LOG_TAG, "addnomedia - new uri : " + destination);
            String fileName = "";
            InputStream in = new ByteArrayInputStream(fileName.getBytes());

            Log.d(LOG_TAG, "copyPicture - destination: " + destination);
            ParcelFileDescriptor file = context.getContentResolver().openFileDescriptor(destination, "w", null);
            OutputStream out = new FileOutputStream(file.getFileDescriptor());
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0)
            {
                out.write(buf, 0, len);
            }
            out.close();
            in.close();
        } else
        {
            Log.d(LOG_TAG, "addNoMediaFileVersion29 - nomedia file already created: ");
        }
    } catch (Resources.NotFoundException | IOException e)
    {
        e.printStackTrace();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...