我有一個應用程序,允許用戶使用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上的文件時,名稱突然變得正確,並且不再爲空。
有人能告訴我爲什麼我的代碼運行後名稱爲空,爲什麼在我的計算機上而不是在電話上查看文件後名稱是正確的?有沒有辦法在保存圖片時將名稱非空?我敢打賭,如果我關掉手機並重新開機,那麼名稱就是正確的,但我不確定如何確切地讓武器立即起作用。
謝謝danidacila,我會試試這個 – Michael 2010-10-20 20:59:51