Answer the question
In order to leave comments, you need to log in
When connecting the gallery in Android, photos are not picked up. Where did I go wrong?
Добрый день.
Понадобилось добавить возможность загружать и отправлять фото не только с камеры, но и из галереи.
На скриншоте показано, что камера работает штатно, делая снимок, по сгенерированному пути сохраняется миникартинка (черные квадраты). При отправке большой оригинал снимка также отправляется на сервер.
Но при выборе фото из галереи или из менеджера файлов фотка не берется – Белые квадраты вместо миникартинки.
Заранее благодарен! Спасибо.
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 questionAsk a Question
731 491 924 answers to any question