@mikhael84

При подключение галереи в Android фотографии не подхватываются. Где я ошибся?

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

Заранее благодарен! Спасибо.

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);
    }
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 02:45
2000 руб./за проект
24 нояб. 2024, в 23:46
20000 руб./за проект