Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 操作\u图像\u捕获将图像文件作为额外数据而不是数据返回_Android_Android Intent_Camera_Android 5.0 Lollipop_Huawei Mobile Services - Fatal编程技术网

Android 操作\u图像\u捕获将图像文件作为额外数据而不是数据返回

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上的意图没有数据,但它有一个可打包的额外数据。我怎样才能从中得到用户的照片

我的应用程序的一个功能包括照相机。用户拍照,应用程序显示图像

我使用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