Я использую этот код для копирования изображения с помощью documentFile.createFile()
private void newcopyFile(File fileInput, String outputParentPath,
String mimeType, String newFileName) {
DocumentFile documentFileGoal = DocumentFile.fromTreeUri(this, treeUri);
String[] parts = outputParentPath.split("\\/");
for (int i = 3; i < parts.length; i++) {
if (documentFileGoal != null) {
documentFileGoal = documentFileGoal.findFile(parts[i]);
}
}
if (documentFileGoal == null) {
Toast.makeText(MainActivity.this, "Directory not found", Toast.LENGTH_SHORT).show();
return;
}
DocumentFile documentFileNewFile = documentFileGoal.createFile(mimeType, newFileName);
InputStream inputStream = null;
OutputStream outputStream = null;
try {
outputStream = getContentResolver().openOutputStream(documentFileNewFile.getUri());
inputStream = new FileInputStream(fileInput);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
if (outputStream != null) {
byte[] buffer = new byte[1024];
int read;
if (inputStream != null) {
while ((read = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, read);
}
}
if (inputStream != null) {
inputStream.close();
}
inputStream = null;
outputStream.flush();
outputStream.close();
outputStream = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
И вот как я запрашиваю ContentResolver
после создания изображения, чтобы немедленно обновить мою галерею изображений с результатом запроса, который должен содержать информацию о вновь созданном изображении.
cursorPhotos = MainActivity.this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projectionsImages,
null,
null,
MediaStore.Images.Media.DATE_TAKEN + " DESC"
);
Но немедленный запрос не смог найти вновь созданное изображение. И если я снова запущу запрос через мгновение, в результате появится вновь созданное изображение.
Кажется, что предоставление информации для вновь созданного изображения требует времени для ContentResolver
(если за него отвечает ContentResolver), поскольку оно будет работать в фоновом режиме, пока я запускаю немедленный запрос.
Есть ли какой-либо метод или прослушиватель, чтобы узнать, когда вновь созданное изображение зарегистрировано ContentResolver
?