0

カメラから取得したギャラリーの画像の名前を変更して、新しい名前を付けようとしています。ファイルの名前を変更すると、元の画像が消えて 2 つの黒い四角が表示されます。ギャラリー画像の名前を変更する手順を教えて、この問題を整理するのに役立つ人はいますか。

パスは次のとおりです。/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)); 

この問題を解決するのを手伝ってくれる人はいますか?

4

2 に答える 2

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);
     }
  });

また、このユースケースに関する多くの有用な情報を提供するこのブログ投稿も確認してください。

于 2012-09-21T11:44:56.990 に答える
0

ギャラリーはMediaStoreコンテンツプロバイダーとやり取りしています。画像ファイルの名前を変更する場合は、コンテンツプロバイダーのフィールドを更新する必要があります。

MediaStoreリファレンスでそれを読むことができます:http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html

潜在的には、MediaStoreの更新をトリガーするだけです。このスレッドを見てください:AndroidでMediaStoreを更新するにはどうすればよいですか?

于 2012-09-21T11:35:47.180 に答える