我在使用Eclipse开发的Android应用程序时遇到了麻烦。
问题在于,当我使用以下说明捕获新图像时:
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,Uri.fromFile(file)); startActivityForResult(intent,TAKE_IMAGE); 设备将文件正确存储在正确的目标(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();
}
不幸的是,我尝试了很多解决方案而没有任何作用
我第一次使用此代码
mScanner = new MediaScannerConnection(
AndroidCustomGalleryActivity.this,new MediaScannerConnection.MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
mScanner.scanFile(imageUri.getPath(), null /* mimeType */);
}
public void onScanCompleted(String path, Uri uri) {
if (path.equals(imageUri.getPath())) {
mScanner.disconnect();
AndroidCustomGalleryActivity.this
.runOnUiThread(new Runnable() {
public void run() {
updateUI();
}
});
}
}
});
mScanner.connect();
imageUri在onMediaScannerConnected方法中包含正确的路径,但从不调用onScanCompleted
我在捕获照片后尝试了这些说明
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, imageUri));
updateUI();
再次,updateUI方法不会检测到新文件。
你能帮我吗?
答案 0 :(得分:0)
使用它来代替你所有的东西:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
在图库扫描程序完成后,使用以下代码从sdcard获取imageBitmap:
File imageFile = new File("/sdcard/gallery_photo_4.jpg");
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
jpgView.setImageDrawable(bitmap);