2012-09-21 4 views
0

카메라에서 가져온 갤러리의 이미지 이름을 변경하여 새 이름을 지정하려고합니다. 파일의 이름을 변경하면 원본 이미지가 사라지고 검은 색 사각형이 두 개 표시됩니다. 갤러리 이미지의 이름을 바꾸는 절차를 알려줌으로써이 문제를 분류하는 데 도움을 줄 수 있습니까? 다음과 같이이미지 이름이 바뀌면 Android Gallery에서 이미지가 사라집니다.

경로는 다음과 같습니다

ContentValues val = new ContentValues(); 
val.put(Images.Media.TITLE, "ImageTitle23"); 
getContentResolver().update(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, val, null, null); 

이미지 제목이 갤러리에 변경 : /mnt/sdcard/DCIM/Camera

나는 다음과 같이 콘텐츠 제공을 통해 이미지 제목을 업데이트했습니다.

하지만 이전과 같이 이름이 같은 얻고 아래로 나는 업데이트 된 이미지를 조회 할 때 :

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의 새로 고침을 트리거 할 수 있습니다. 미디어 스토어 MediaStore는 사진의 변화를 보이는 How can I refresh MediaStore on Android?

+0

나는 다음과 같이 콘텐츠 제공을 통해 이미지 제목 업데이트하려고 :
ContentValues의 발 = 새로운 ContentValues를();
\t \t val.put (Images.Media.TITLE "ImageTitle23");
getContentResolver(). update (MediaStore.Images.Media.EXTERNAL_CONTENT_URI, val, null, null);
user1276092

+0

당신이 말한 것처럼 수정 된 코드이지만 이미지를 업데이트 한 후 쿼리 할 때 여전히 동일한 이름을 얻습니다. – user1276092

2

을하지만, 실시간으로 모든 변화에 반응하지 않습니다이 스레드 봐. 당신이 그런 수정을 할 때마다이 파일을 검사 할 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을 확인해야합니다.

관련 문제