java - 通知图像 ContentProvider 有关外部存储上的新文件的信息

标签 java android

我应该如何通知图像内容提供商我刚刚在 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/

相关文章:

android - 在后台线程上的磁盘上滑动缓存图像

java - Android - Runnable run() 函数不工作

java - 对 jackson2 反序列化的更好控制

Java URLConnection 响应已编码

android - Parse.com 拉取数组数据

java - 在接收到 Firebase 消息时在 RecyclerView Adapter 中添加列表项

java - 如何选择正确的方式来获取Java中的相关上下文?

java - 为什么这个 Java 8 lambda 编译失败?

java - 遇到这个java代码的问题 - 应该打印并计算随机抛硬币中正面和反面的数量

android - 创建一个扩展 API 25+ 资源的类