Android 操作\u图像\u捕获将图像文件作为额外数据而不是数据返回
我的应用程序的一个功能包括照相机。用户拍照,应用程序显示图像 我使用StartActivityForResult通过ACTION_IMAGE_CAPTURE启动意图,并使用onActivityResult捕获响应通常我可以根据在onActivityResult中收到的意图调用getData(),并获取MediaProvider的内容uri 我的问题如下:我的一个测试设备,华为ALE-L21,我在ActivityResult上的意图没有数据,但它有一个可打包的额外数据。我怎样才能从中得到用户的照片?安卓工作室也没有告诉我额外包裹的名字Android 操作\u图像\u捕获将图像文件作为额外数据而不是数据返回,android,android-intent,camera,android-5.0-lollipop,huawei-mobile-services,Android,Android Intent,Camera,Android 5.0 Lollipop,Huawei Mobile Services,我的应用程序的一个功能包括照相机。用户拍照,应用程序显示图像 我使用StartActivityForResult通过ACTION_IMAGE_CAPTURE启动意图,并使用onActivityResult捕获响应通常我可以根据在onActivityResult中收到的意图调用getData(),并获取MediaProvider的内容uri 我的问题如下:我的一个测试设备,华为ALE-L21,我在ActivityResult上的意图没有数据,但它有一个可打包的额外数据。我怎样才能从中得到用户的照片
免责声明:我调用getActivity(),因为我在片段中使用此代码
这是我用来拿相机的
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(takePictureIntent, getResources().getInteger(R.integer.RQ_PERMISSION_WRITE_EXTERNAL_STORAGE));
}
这是我的onActivityResult中的代码
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultIntent) {
super.onActivityResult(requestCode, resultCode, resultIntent);
switch (requestCode) {
case 1: //RQ_ImageCapture
case 2: //RQ_ImageSelected
if (resultIntent != null) {
try {
Uri selectedImage = resultIntent.getData();
if(selectedImage != null) {
Bitmap bitmap =
MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), selectedImage);
setImageAsBackground(selectedImage, bitmap);
}
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
}
通常,我可以根据onActivityResult中接收到的意图调用getData(),并获取MediaProvider的内容uri
您的代码将在其中许多设备上失败,包括所有最近的Nexus设备ACTION\u IMAGE\u CAPTURE
不应返回Uri
。引述:
如果额外_输出不存在,则在额外字段中以位图对象的形式返回一个小尺寸图像。这对于只需要小图像的应用程序非常有用。如果存在额外_输出,则全尺寸图像将写入额外_输出的Uri值
由于未包含EXTRA\u输出
,因此将获得带有缩略图的数据
EXTRA(getData().getExtra(“数据”)
)
我在ActivityResult中获得的意图没有数据,但它有一个可打包的额外数据
考虑到您的操作\u图像\u捕获
请求,这就是您应该得到的
如果您想要全尺寸图像,请包括EXTRA_OUTPUT
,可能指向应用程序中的FileProvider
,如我在中演示的。然后,您知道照片应该放在哪里,因为您指定了Uri