4

私のアプリは.jpgファイルを他のフォルダーに移動し、ストックギャラリーで表示できるようにするために、sendBroadcast ACTION_MEDIA_MOUNTEDを持っています

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

しかし、これには時間がかかります..これを高速化するには、mediaStoreのcursor/contentResolverを直接手動で更新する必要があることを(おそらく)理解しています。誰でもこれについて私を助けることができますか? ありがとう..私のコードは実際には次のとおりです。

 Uri uri = (Uri) list.get(cont); 
 Cursor cursor = managedQuery(uri, proj, null, null, null);
 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
 cursor.moveToFirst();
 String app = cursor.getString(column_index);
 File orig =  new File( app.toString());
 File dest = new File( destination_path +"/"+ orig.getName().toString());
 orig.renameTo(dest);

これで、ファイルをパスから別のパスに移動します。

この後、ギャラリーで画像を取得するには、送信する必要がありますBroadcast ACTION_MEDIA_MOUNTED

4

2 に答える 2

3

私はちょうど同じことをしなければなりませんでしたMediaStore.

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, newPath);
boolean successMediaStore = context.getContentResolver().update(
    MediaStore.<TYPE>.Media.EXTERNAL_CONTENT_URI, values,
    MediaStore.MediaColumns.DATA + "='" + oldPath + "'", null) == 1;

<TYPE>正しいメディア ストアに置き換えます... ( ImagesVideoAudio...)

于 2015-10-08T09:18:55.917 に答える
0

MediaScannerConnection を使用して OS を更新します。

MediaScannerConnection.scanFile(this,
          new String[] { file.toString() }, null,
          new MediaScannerConnection.OnScanCompletedListener() {
      public void onScanCompleted(String path, Uri uri) {
          // code to execute when scanning is complete
      }
 });
于 2012-08-10T17:34:11.620 に答える