从选择器中选择摄像机意图后创建文件

时间:2019-04-05 00:23:55

标签: android android-intent android-camera-intent android-intent-chooser

我已经通过Intent创建了一个Intent.createChooser,并且可以成功地提示用户在选择图像还是拍照之间进行选择。如果要拍照,我想将照片存储到外部存储器中,所以我想知道如果选择了相机意图怎么创建File

用于创建选择器Intent的代码:

Intent receiver = new Intent(requireContext(),ImageBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(requireContext(),
    REQUEST_PROFILE_PICTURE,receiver,PendingIntent.FLAG_UPDATE_CURRENT);

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Intent getPictureIntent = new Intent();
getPictureIntent.setType("image/*");
getPictureIntent.setAction(Intent.ACTION_GET_CONTENT);

Intent chooserIntent = Intent.createChooser(getPictureIntent,
    getString(R.string.imageDialogTitle),pendingIntent.getIntentSender());
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{takePictureIntent});

startActivityForResult(chooserIntent,REQUEST_PROFILE_PICTURE);

如果我创建File专门用于通过以下方式拍照,则可以创建Intent并将图像存储到其中:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);

我最好的选择是在不管用户选择时,在启动chooseIntent之前先创建文件吗?

如果要在选择器Intent之前创建文件,我将如何知道用户是在onActivityResult()拍摄了照片还是选择了照片?如果我是正确的话,则requestcode中返回的onActivityResult()来自选择者Intent,因此无论选择摄影机还是画廊,它始终是REQUEST_PROFILE_PICTURE

任何见识都会受到赞赏。

0 个答案:

没有答案