Android 如何通过调用Intent(MediaStore.ACTION\u IMAGE\u CAPTURE)获取照片的位图?

Android 如何通过调用Intent(MediaStore.ACTION\u IMAGE\u CAPTURE)获取照片的位图?,android,Android,首先,我创建了使用日期存储照片的唯一文件路径: File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM),"raspberry"); String dateString = new SimpleDateFormat("MM/dd/yyyy_HH:mm:ss").format(new Date()); filePath=new File(file,"SideB

首先,我创建了使用日期存储照片的唯一文件路径:

File file = new File(Environment.getExternalStoragePublicDirectory( 
  Environment.DIRECTORY_DCIM),"raspberry");
String dateString = new SimpleDateFormat("MM/dd/yyyy_HH:mm:ss").format(new Date());
filePath=new File(file,"SideBySide4_"+dateString+".jpg");
我使用清单和xml中定义的FileProvider从
filePath
生成了一个uri:

mUri = FileProvider.getUriForFile(this,
            BuildConfig.APPLICATION_ID + ".provider",
            filePath);
mCurrentPhotoPath = "file:" + filePath.getAbsolutePath();//for getting Bitmap in onActivityResult()
然后,我启动了camera Intent并为其提供Uri以存储拍摄的照片:

Intent takePictureIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mUri);
startActivityForResult(takePictureIntent,REQUEST_TAKE_PHOTO);
然后在onActivityResult()中,我尝试获取位图:

Uri imageUri=Uri.parse(mCurrentPhotoPath);
            File file=new File(imageUri.getPath());
            try{
                InputStream ims=new FileInputStream(file);
                photoBitmap=BitmapFactory.decodeStream(ims);
            }catch(FileNotFoundException e){
                return;
            }

但photoBitmap为空

解决方案:

您可以这样做:

在onActivityResult()中,单击图片后,您将在
数据中获得数据,因此:

Bitmap picture = (Bitmap) data.getExtras().get("data");
可以使用

希望有用