Dro*_*man 5 filesystems android android-gallery android-file
在使用 Android 文件系统时,我可能注意到一个我无法真正向自己解释的问题。使用File.renameTo()or更改图像File.delete()(无论图像是否有任何Exif数据)会产生以下结果(上面提到的方法返回true):
File.renameTo():图库仍然通过详细信息显示旧名称,并且下面发布的方法也返回一个空缩略图(当然,因为路径指向应该删除的文件)File.delete():图像已从文件系统中消失(许多经过测试的文件浏览器都不再显示它并new File(pathToDeletedImage).exists()返回false),但图库仍然显示该图像,包括。所有细节问题:我是否需要以某种方式通知图库有关我刚刚对图像文件执行的更改?
我用来获取缩略图的方法:
private Bitmap getThumbnail(ContentResolver cr, String path)
throws Exception {
Cursor ca = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.MediaColumns._ID },
MediaStore.MediaColumns.DATA + "=?", new String[] { path },
null);
if (ca != null && ca.moveToFirst()) {
int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID));
ca.close();
return MediaStore.Images.Thumbnails.getThumbnail(cr, id,
MediaStore.Images.Thumbnails.MICRO_KIND, null);
}
ca.close();
return null;
}
Run Code Online (Sandbox Code Playgroud)
更新
好吧,我发现我们需要将所有文件更改与文件系统同步。我的猜测是,类似File.delete()和 的操作File.renameTo()在 Linux 级别上工作,但上面也有 Android。在以编程方式删除DCIM目录后,我最终重置了我的 Nexus 5,图库只是拒绝重新创建,并且如果我手动重新创建它也拒绝使用它,所以所有相机图像都是空白的。清除缓存并重新启动没有帮助。如果它发生在用户的设备上,我想我的开发者评级会下降到负值。
我只能弄清楚如何正确删除图像,下面的代码有效并且更改已同步(但是不适用于重命名):
private void broadcastScanFile(File f) {
Intent intentNotifyImgDeleted = new Intent();
intentNotifyImgDeleted.setType("image/*");
intentNotifyImgDeleted.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intentNotifyImgDeleted.setData(Uri.fromFile(f));
sendBroadcast(intentNotifyImgDeleted);
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是:如何删除/重命名任何文件/目录,以便更改与文件系统正确同步?
PS是的,我知道如何使用搜索,到目前为止还没有找到任何合适的解决方案。
试试这个:)只需在你的工作完成后添加这个:)它将帮助你传递你编辑的文件路径
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(filePath))));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2821 次 |
| 最近记录: |