Я пытаюсь создать запись в медиастор с точкой впереди, как гласит цитата.
Проблема в том, что когда я пытаюсь это сделать, он ставит подчеркивание "_" перед точкой, это не хорошо для моего варианта использования, так как я пытаюсь создать файл ".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();
}
}