我正在MediaStore
上直接操作,并在我的应用添加/删除文件时添加/删除文件。我想要快速和即时MediaStore
更新以及批处理操作的支持,这就是我这样做的原因。以下是添加操作的示例:
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
File f = new File(path);
ContentValues values = new ContentValues(7);
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DISPLAY_NAME, fileName);
values.put(MediaStore.Images.Media.DATE_TAKEN, dateTaken);
values.put(MediaStore.Images.Media.DATE_MODIFIED, dateModified / 1000L);
values.put(MediaStore.Images.Media.MIME_TYPE, ExtensionUtil.getMimeType(fileName));
values.put(MediaStore.Images.Media.ORIENTATION, rotation);
values.put(MediaStore.Images.Media.DATA, filePath);
if (latitude != null || longitude != null)
{
values.put(MediaStore.Images.Media.LATITUDE, latitude);
values.put(MediaStore.Images.Media.LONGITUDE, longitude);
}
ContentProviderOperation operation = ContentProviderOperation.newInsert(uri)
.withValues(values)
.build()
这是一个删除操作:
String columnData = MediaStore.Images.Media.DATA;
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
ContentProviderOperation operation = ContentProviderOperation.newDelete(uri)
.withSelection(columnData + "=?", new String[]{path})
.build();
通过这种操作,我能够处理所有情况并按照我的意愿分批执行。
问题
隐藏文件夹。如果我隐藏了一个文件夹,我在其中创建了一个.nomedia文件,之后我想从MediaStore
删除其中所有媒体的条目,但当然要保存存储上的文件。有关如何创建不删除文件的操作的任何想法吗?
我不想使用MediaScanner
,我正在优化速度,我需要操作,以便我可以批量调用它们中的很多......