M
M
mikhael842016-09-30 09:20:32
Gallery
mikhael84, 2016-09-30 09:20:32

When connecting the gallery in Android, photos are not picked up. Where did I go wrong?

Добрый день.
Понадобилось добавить возможность загружать и отправлять фото не только с камеры, но и из галереи.
На скриншоте показано, что камера работает штатно, делая снимок, по сгенерированному пути сохраняется миникартинка (черные квадраты). При отправке большой оригинал снимка также отправляется на сервер.
Но при выборе фото из галереи или из менеджера файлов фотка не берется – Белые квадраты вместо миникартинки.
Заранее благодарен! Спасибо.
e7e3f9892a9b463cba9f941122f4eca2.jpg

final Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        mHasGallery = galleryIntent.resolveActivity(getActivity().getPackageManager()) != null;

        final Intent cameraIntent =  new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        mHasCamera = cameraIntent.resolveActivity(getActivity().getPackageManager()) != null;

        final AlertDialog.Builder photoDialog = new AlertDialog.Builder(getActivity());
        photoDialog.setTitle("Добавить фото!");
        photoDialog.setItems(getResources().getTextArray(R.array.photo_dialog_actions),
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        if (i == 0 && mHasCamera) {
                            File file = getPhotoFile();
                            if (file != null) {
                                mLastFile = file;
                                cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                                startActivityForResult(cameraIntent, REQUEST_PHOTO);
                            }
                        }
                        else if (i == 1 && mHasGallery) {
                            File file = getPhotoFile();
                            if (file != null) {
                                mLastFile = file;
                                galleryIntent.setType("image/*");
                                galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
                                galleryIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                                startActivityForResult(Intent.createChooser(galleryIntent, "Выберите фото"), SELECT_FILE);
                            }
                        }
                        else {
                            dialogInterface.dismiss();
                        }
                    }
                });

        mCameraButton.setEnabled(mHasGallery);
        mCameraButton.setEnabled(mHasCamera);

private void onPhotoCaptured(File file) {
        int position = mFlat.getPhotos().size();
        mFiles.add(file);
        mFlat.getPhotos().add(new Photo(file));
        mPhotosAdapter.notifyItemInserted(position);
        mCameraButton.setEnabled(mHasCamera && mFlat.getPhotos().size() < MAX_PHOTOS);
    }

    private void onPhotoCapturedGal(File file) {
        int position = mFlat.getPhotos().size();
        mFiles.add(file);
        mFlat.getPhotos().add(new Photo(file));
        mPhotosAdapter.notifyItemInserted(position);
        mCameraButton.setEnabled(mHasGallery && mFlat.getPhotos().size() < MAX_PHOTOS);
    }

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question