2010-08-13 56 views
0

我有一個應用程序,允許用戶使用Intent ACTION_IMAGE_CAPTURE拍攝並保存新照片。用戶接受新拍攝的照片後,我創建一個ContentValue對象來設置照片信息,然後將照片插入MediaStore併發送廣播,以便用戶在打開圖片查看器應用程序(如圖庫)時可以看到照片:Android MediaStore將照片名稱設置爲NULL

ContentValues newImage = new ContentValues(3); 

newImage.put(Media.DISPLAY_NAME, mPicName); 
newImage.put(Media.MIME_TYPE, "image/png"); 
newImage.put(MediaStore.Images.Media.DATA, path); 

mPictureUri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, newImage); 

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mPictureUri)); 

所有這些代碼工作正常。照片被正確保存,我可以使用圖庫查看照片。問題是,當我在圖庫中查看照片並選擇「詳細信息」時,它將照片名稱顯示爲「空」。是的,我知道一個事實,即上面的變量mPicName不是null,並且始終具有正確的值。

奇怪的是,當我在運行Android 2.1的Droid上運行我的應用程序時,當我選擇從手機和計算機複製文件時,我在Windows計算機上打開Droid,當我離開進入我的應用程序的照片創建文件夾並查看新照片,名稱是正確的。然後,當我禁用從手機/電腦複製文件並返回到庫中查看我的Droid上的文件時,名稱突然變得正確,並且不再爲空。

有人能告訴我爲什麼我的代碼運行後名稱爲空,爲什麼在我的計算機上而不是在電話上查看文件後名稱是正確的?有沒有辦法在保存圖片時將名稱非空?我敢打賭,如果我關掉手機並重新開機,那麼名稱就是正確的,但我不確定如何確切地讓武器立即起作用。

回答

相關問題