2012-09-21 47 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,讓很多有用的信息在這個用例。