目前正在尝试编辑我存储在 Android 11 / Android R MediaStore API 的下载集合中的文件。我使用以下代码编辑文件:
while (cursor.moveToNext()) {
long id = cursor.getLong(idColumn);
Uri contentUri = ContentUris.withAppendedId(MediaStore.Downloads.EXTERNAL_CONTENT_URI, id);
try (OutputStream myFile = getContentResolver().openOutputStream(contentUri, "wa")) {
myFile.write("XXX Dies ist eine Aenderung XXX".getBytes(Charset.forName("UTF-8")));
}
catch (Exception e){}
}
在像这样创建它之后,ala 具有更短的初始内容:
try {
OutputStream fos = resolver.openOutputStream(Objects.requireNonNull(anUri));
fos.write("File Hallo".getBytes(Charset.forName("UTF-8")));
fos.close();
}
运行第二个代码时,我没有收到完整的消息。相反,Android 似乎开始覆盖文件,但只写入与文件原始长度一样多的信息。
根据我对文档的阅读,我所能做的就是 a) 制作本地副本 b) 将其推送回 MediaStore。可以吗?有没有办法编辑已经位于文件系统中的文件?