0

我在使用 Eclipse 开发的 Android 应用程序时遇到问题。

问题是当我使用以下说明捕获新图像时:

intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, TAKE_IMAGE);

设备将文件正确存储在右侧destination(extSdCard),但以下应该重新加载目录内容的代码在设备重新启动之前找不到新文件。

   images.clear();
   final String[] columns = { MediaStore.Images.Thumbnails._ID };
   final String orderBy = MediaStore.Images.Media._ID;
   String condition = MediaStore.Images.Media.DATA + " like '%/"+
   Singleton.getCurrentPatient().getNrdo()+"/%'";

   Cursor imagecursor =  getContentResolver().query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
                condition, null, orderBy);

    if(imagecursor != null){
     int image_column_index = imagecursor
                    .getColumnIndex(MediaStore.Images.Media._ID);
     int count = imagecursor.getCount();
     for (int i = 0; i < count; i++) {
                imagecursor.moveToPosition(i);
           int id = imagecursor.getInt(image_column_index);
           ImageItem imageItem = new ImageItem();
          imageItem.id = id;
          lastId = id;
          imageItem.img = MediaStore.Images.Thumbnails.getThumbnail(
                        getApplicationContext().getContentResolver(), id,
                        MediaStore.Images.Thumbnails.MICRO_KIND, null);
         images.add(imageItem);
     }
       imagecursor.close();
     }
    notifyDataSetChanged();
}

有什么想法吗?我们必须提交来刷新一些缓存吗?

4

1 回答 1

3

您可以使用它MediaScannerConnection来通知系统有新的媒体文件。MediaScanner也作为启动顺序的一部分运行,这就是为什么您在MediaStore重新启动后看到文件出现的原因。

于 2013-04-15T08:58:13.853 回答