Добрый день.
Понадобилось добавить возможность загружать и отправлять фото не только с камеры, но и из галереи.
На скриншоте показано, что камера работает штатно, делая снимок, по сгенерированному пути сохраняется миникартинка (черные квадраты). При отправке большой оригинал снимка также отправляется на сервер.
Но при выборе фото из галереи или из менеджера файлов фотка не берется – Белые квадраты вместо миникартинки.
Заранее благодарен! Спасибо.
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);
}