我正在努力使用 DocumentFile/TreeUri 更新媒体存储中的元数据。这就是我尝试这样做的方式:
boolean canWrite = documentFile.canWrite(); //returns true
Uri mediaUri = MediaStore.getMediaUri(context, documentFile.getUri());
ContentValuesvalues = new ContentValues();
values.put(MediaStore.MediaColumns.DATE_MODIFIED, newLastModified);
boolean success = context.getContentResolver().update(mediaUri, values,null, null) > 0;
它失败了,logcat 显示:
W/MediaProvider:忽略 date_modified 的突变
我究竟做错了什么?DocumentFile 是可写的,它是通过 Intent.ACTION_OPEN_DOCUMENT_TREE 接收的,并且在文件夹上调用了 takePersistableUriPermission。我还尝试在之前使用 IS_PENDING 更新条目并在之后删除:
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.IS_PENDING, 1);
boolean success = context.getContentResolver().update(mediaUri, values,
null, null) > 0; //returns false
无论出于何种原因返回也是错误的,但我看到该文件以 .pendingxxxx 为前缀,所以它似乎工作
ContentValuesvalues = new ContentValues();
values.put(MediaStore.MediaColumns.DATE_MODIFIED, newLastModified);
values.put(MediaStore.MediaColumns.IS_PENDING, 0);
boolean success = context.getContentResolver().update(mediaUri, values,null, null) > 0; //returns false