6

画像アイテムに小さなサムネイルがあるファイルマネージャーを作成しています。

を使用してサムネイル画像を取得しMediaStoreます。すべて正常に動作します。しかし、ファイルの名前を変更したり移動したりすると、サムネイルが表示されません。

更新するコードを見つけましたMediaStore:

getActivity().sendBroadcast(
  new Intent(Intent.ACTION_MEDIA_MOUNTED, 
             Uri.parse("file://" + Environment.getExternalStorageDirectory())));

うまくいきましたが、4 ~ 5 秒待ってから更新してから、サムネイルを更新する必要があります。

名前の変更または移動の直後に画像のサムネイルを取得する方法は?

4

4 に答える 4

2

,の代わりにACTION_MEDIA_SCANNER_SCAN_FILEを使用するとどうなりますかACTION_MEDIA_MOUNTED(つまり、完全なディレクトリ階層ではなく、単一のファイルの更新をトリガーします)。

ディレクトリの URI を、たとえばUri.fromFile()を使用して取得したファイルの URI に置き換える必要があります。

ファイルを移動または名前変更する場合は、古い URI と新しい URI を更新する必要があります。

于 2013-08-21T11:23:03.543 に答える
1

Android で 1 つの特定のイメージを更新するための推奨される方法は、ACTION_MEDIA_SCANNER_SCAN_FILE インテントを使用することです。そしてよりスムーズに

Android Developer SiteのBasic Photo Handling Trainingで確認できます。

private void galleryAddPic() {
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    File f = new File(mCurrentPhotoPath);
    Uri contentUri = Uri.fromFile(f);
    mediaScanIntent.setData(contentUri);
    this.sendBroadcast(mediaScanIntent);
}

不足しているファイルの新しいサムネイルをすぐに表示したい場合は、自分で行うことができます。まず、前と同じように MediaStore を確認し、返されたサムネイルが null の場合は、ThumbnailUtilsまたはBitmapFactoryを使用して独自のサムネイルを生成します。

また、ビットマップの処理と表示については、Android Training Course に静かで簡単なサンプルがあります。

于 2013-08-23T01:29:37.793 に答える
0

実際に Intent.ACTION_MEDIA_MOUNTED ブロードキャスト インテントを送信するのは本当に見苦しいです。この投稿を読むhttp://androidyue.github.io/blog/2014/01/19/scan-media-files-in-android ファイルの名前変更について。古いファイルをライブラリから削除してから、新しいファイルをライブラリに追加する必要があります。これはあなたを助けることができると思います。

于 2014-01-21T05:23:08.707 に答える