2012-09-21 18 views
0

我想重命名从相机拍摄的图库中的图像以给出一个新名称。当我重命名文件时,原始图像消失,显示2个黑色方块。任何人都可以通过告诉我重命名图库图像的过程来帮助我排序此问题。图片在Android图库中消失后重命名

路径如下:/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

图库正在与MediaStore内容提供者进行交互。如果您更改图像文件的名称,则可能需要更新内容提供程序中的字段。

您可以在MediaStore参考阅读它:http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html

潜在你可以触发MediaStore的刷新。看看这个帖子:How can I refresh MediaStore on Android?

+0

我试图通过内容提供程序更新图像标题,如下所示:
ContentValues val = new ContentValues();
\t \t val.put(Images.Media.TITLE,“ImageTitle23”);
getContentResolver()。update(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,val,null,null);
user1276092

+0

按照您的说法修改后的代码,但在更新图像后尝试查询时仍会获得相同的名称。 – user1276092

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,让很多有用的信息在这个用例。