if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver contentResolver = activity.getContentResolver();
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DISPLAY_NAME, "log.txt");
values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS + File.separator);
values.put(MediaStore.MediaColumns.MIME_TYPE, "text/plain");
values.put(MediaStore.MediaColumns.IS_PENDING, 1);
Uri mediaUri = contentResolver.insert(
MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY),
values);
try (OutputStream outputStream = contentResolver.openOutputStream(mediaUri, "wt")) {
// Write your data here
OutputStreamWriter osw = new OutputStreamWriter(outputStream);
osw.write("some text");
osw.close();
values = new ContentValues();
values.put(MediaStore.MediaColumns.SIZE, 4);
values.put(MediaStore.MediaColumns.IS_PENDING, 0);
contentResolver.update(mediaUri, values, null, null);
} catch (IOException e) {
// Handle exceptions
}
}
The above code create files log.txt, log(1).txt, log(2).txt...
I want to create only one file: log.txt
I took a look at this SO answer and this is why the code has the following with "wt":
try (OutputStream outputStream = contentResolver.openOutputStream(mediaUri, "wt")) {