我应该如何通知图像内容提供商我刚刚在 Pictures 目录中保存了一个文件?我期望例如类似画廊的应用程序能够查看我的新文件。
Uri uri = Uri.fromFile(file);
getContext().getContentResolver().notifyChange(uri, null);
我在某个地方(Vogella?)找到的似乎不起作用。还是从一开始就采取了错误的做法?
最佳答案
图像通知在图像插入媒体数据库之后完成。这通常是由 android 系统媒体扫描仪找到图像时完成的。
您可以编写自己的代码将图像插入媒体数据库,然后调用 getContext().getContentResolver().notifyChange(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null);
进行通知某些图像已更改,但没有具体说明是哪个图像。
如果您修改了媒体数据库中已有的图像,则必须将文件 uri 转换为 content: uri。 getContext().getContentResolver().notifyChange(imageContentUri, null);
.
如果您正在实现 android-4.4 或更高版本,您可以要求媒体扫描仪(重新)分析您的文件。详情见How to trigger MediaScan on Nexus 7? 。在 android-4.4 之前,这可能无法按预期工作(即在我的 android-4.2 上,它会启动完整的重新扫描)
关于java - 通知图像 ContentProvider 有关外部存储上的新文件的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329044/