我需要同时呼叫Intent
来获取图像和视频。 similar to this似乎是不可能的。因此,执行此操作的另一种方法是createChooser()
。但是我还停留在下面的代码中。
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, file.getAbsolutePath());
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, file.getAbsolutePath());
Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
Intent[] intentArray = new Intent[]{takePictureIntent};
chooserIntent.putExtra(Intent.EXTRA_INTENT, takeVideoIntent);
chooserIntent.putExtra(Intent.EXTRA_TITLE, "Choose an action");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityForResult(chooserIntent, 1);
MediaStore.EXTRA_OUTPUT
无法正常工作。从相机返回文件为空。但是,它的确打开了如下所示的选择器,但文件为空。
问题:-
1.如何合并两种意图并以MediaStore.EXTRA_OUTPUT
的形式提供单独的文件?
2.众所周知,Android中有成百上千个摄像头应用程序,因此这是打开这种意图的好方法(无论制造商和API级别如何,它都能在所有设备上正常工作)?或者,我应该移动AlertDialog
来分别打开每个动作的意图。
答案 0 :(得分:0)
请尝试以下代码:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
Intent chooserIntent = Intent.createChooser(takePictureIntent, "Capture Image or Video");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{takeVideoIntent});
startActivityForResult(chooserIntent, CAMERA_IMAGES_REQUEST);