我正在尝试重命名从相机中取出的图像以提供新名称。当我重命名文件时,原始图像消失,显示2个黑色方块。任何人都可以通过告诉我重命名Gallery Image的程序来帮助我解决这个问题。
路径如下:/mnt/sdcard/DCIM/Camera
我尝试通过内容提供商更新图片标题,如下所示:
ContentValues val = new ContentValues();
val.put(Images.Media.TITLE, "ImageTitle23");
getContentResolver().update(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, val, null, null);
图库标题在图库中更改。
但是当我尝试查询更新的图像时,我得到的名称与上一个相同:
final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, MediaStore.Images.Media._ID+"="+id, null, imageOrderBy);
if(imageCursor.moveToFirst()){
int idd = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID));
String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
MediaStore会查找图片中的更改,但不会实时对所有更改做出反应。每次进行此类修改时,都应要求MediaScanner扫描此文件:
MediaScannerConnection.scanFile(
getApplicationContext(),
new String[]{file.getAbsolutePath()},
null,
new OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
Log.v("grokkingandroid",
"file " + path + " was scanned seccessfully: " + uri);
}
});
此外,您应该检查this blog post,它提供了有关此用例的大量有用信息。
答案 1 :(得分:0)
Gallery正在与MediaStore内容提供商进行交互。如果更改图像文件的名称,则可能需要更新内容提供程序中的字段。
您可以在MediaStore参考中阅读:http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html
您可以直接触发MediaStore的刷新。看看这个帖子:How can I refresh MediaStore on Android?