Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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 data.getData()在从照相机和多媒体资料中拍摄/选择照片时,在OnActvityResult中返回null_Android_Android Intent_Android Camera_Android Camera Intent_Android Intent Chooser - Fatal编程技术网

Android data.getData()在从照相机和多媒体资料中拍摄/选择照片时,在OnActvityResult中返回null

Android data.getData()在从照相机和多媒体资料中拍摄/选择照片时,在OnActvityResult中返回null,android,android-intent,android-camera,android-camera-intent,android-intent-chooser,Android,Android Intent,Android Camera,Android Camera Intent,Android Intent Chooser,我正在开发一个android应用程序,它有一个个人资料片段,用户可以通过拍照或从图库中选择上传个人资料图片。就目前而言,通过活动,一切都很顺利。结果\u正常。但问题是onActivityResult data.getData()没有返回任何内容。我对这个问题进行了研究,但没有结果 这是我的editprofile片段中包含的两个方法 private void setGalleryBtn() { if (PermissionHandler.checkPermission(getActivit

我正在开发一个android应用程序,它有一个个人资料片段,用户可以通过拍照或从图库中选择上传个人资料图片。就目前而言,通过活动,一切都很顺利。结果\u正常。但问题是onActivityResult data.getData()没有返回任何内容。我对这个问题进行了研究,但没有结果

这是我的editprofile片段中包含的两个方法

private void setGalleryBtn() {
    if (PermissionHandler.checkPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)) {
        AppHelper.LogCat("Read data permission already granted.");
        new PickerBuilder(getActivity(), PickerBuilder.SELECT_FROM_GALLERY)
                .setOnImageReceivedListener(imageUri -> {
                    Intent data = new Intent();
                    data.setData(imageUri);
                    AppHelper.LogCat("new image SELECT_FROM_GALLERY" + imageUri);
                    mEditProfilePresenter.onActivityResult(this, AppConst.SELECT_PROFILE_PICTURE, RESULT_OK, data);

                })
                .setImageName(getActivity().getString(R.string.app_name))
                .setImageFolderName(getActivity().getString(R.string.app_name))
                .setCropScreenColor(R.color.colorPrimary)
                .withTimeStamp(false)
                .setOnPermissionRefusedListener(() -> {
                    PermissionHandler.requestPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE);
                })
                .start();

    } else {
        AppHelper.LogCat("Please request Read data permission.");
        PermissionHandler.requestPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE);
    }

}



private void setCameraBtn() {
    if (PermissionHandler.checkPermission(getActivity(), Manifest.permission.CAMERA)) {
        AppHelper.LogCat("camera permission already granted.");
        new PickerBuilder(getActivity(), PickerBuilder.SELECT_FROM_CAMERA)
                .setOnImageReceivedListener(imageUri -> {

                    AppHelper.LogCat("new image SELECT_FROM_CAMERA " + imageUri);
                    Intent data = new Intent();
                    data.setData(imageUri);
                    mEditProfilePresenter.onActivityResult(this, AppConst.SELECT_PROFILE_CAMERA, RESULT_OK, data);

                })
                .setImageName(getActivity().getString(R.string.app_name))
                .setImageFolderName(getActivity().getString(R.string.app_name))
                .setCropScreenColor(R.color.colorPrimary)
                .withTimeStamp(false)
                .setOnPermissionRefusedListener(() -> {
                    PermissionHandler.requestPermission(getActivity(), Manifest.permission.CAMERA);
                })
                .start();
    } else {
        AppHelper.LogCat("Please request camera  permission.");
        PermissionHandler.requestPermission(getActivity(), Manifest.permission.CAMERA);
    }
}
这是我的EditProfilePresenter.onActivityResult方法

public void onActivityResult(Edit_profile_fragment myEdit_profile_fragment, int requestCode, int resultCode, Intent data) {
    String imagePath = null;
    if (resultCode == Activity.RESULT_OK) {
        if (PermissionHandler.checkPermission(myEdit_profile_fragment.getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)) {
            AppHelper.LogCat("Read contact data permission already granted.");

            switch (requestCode) {
                case AppConst.SELECT_PROFILE_PICTURE:
                        imagePath = FilesManager.getPath(myEdit_profile_fragment.getActivity(), data.getData());
                    break;
                case AppConst.SELECT_PROFILE_CAMERA:
                    if (data.getData() != null) {
                        imagePath = FilesManager.getPath(myEdit_profile_fragment.getActivity(), data.getData());

                    } else {
                        try {
                            String[] projection = new String[]{MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA, MediaStore
                                    .Images.ImageColumns.BUCKET_DISPLAY_NAME, MediaStore.Images.ImageColumns.DATE_TAKEN, MediaStore.Images
                                    .ImageColumns.MIME_TYPE};
                            final Cursor cursor = myEdit_profile_fragment.getActivity().getContentResolver()
                                    .query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.ImageColumns
                                            .DATE_TAKEN + " DESC");

                            if (cursor != null && cursor.moveToFirst()) {
                                String imageLocation = cursor.getString(1);
                                cursor.close();
                                File imageFile = new File(imageLocation);
                                if (imageFile.exists()) {
                                    imagePath = imageFile.getPath();
                                }
                            }
                        } catch (Exception e) {
                            AppHelper.LogCat("error" + e);
                        }
                    }
                    break;
            }


            if (imagePath != null) {
                EventBus.getDefault().post(new Pusher(AppConst.EVENT_BUS_IMAGE_PROFILE_PATH, imagePath));
            } else {
                AppHelper.LogCat("imagePath is null");
            }
        } else {
            AppHelper.LogCat("Please request Read contact data permission.");
            PermissionHandler.requestPermission(myEdit_profile_fragment.getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE);
        }
    }

}
请问我做错了什么?

你可以试试这个

if (requestCode == REQUEST_FROM_CAMERA && resultCode == RESULT_OK)
{
Bundle extras2 = data.getExtras();
 if (extras2 != null) {
                    // do your stuff here
                     } 
                   else {
                  // handle this case as well if data.getExtras() is null
                    Uri selectedImage = data.getData();
                   }
}
希望它能帮助你

你可以试试这个

if (requestCode == REQUEST_FROM_CAMERA && resultCode == RESULT_OK)
{
Bundle extras2 = data.getExtras();
 if (extras2 != null) {
                    // do your stuff here
                     } 
                   else {
                  // handle this case as well if data.getExtras() is null
                    Uri selectedImage = data.getData();
                   }
}

希望对您有所帮助

您找到解决方案了吗?您找到解决方案了吗?