Я занимаюсь разработкой приложения, в котором используются изображения, предоставляемые другими приложениями (например, галереей, браузером).
код:
public void handleImage() {
Intent intent = getIntent();
Uri imgUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (imgUri != null){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
InputStream imgInputStream = context.getContentResolver().openInputStream(imgUri);
Bitmap img = (BitmapFactory.decodeStream(imgInputStream));
img.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] imgByteArray = stream.toByteArray();
Bundle bundle = new Bundle();
bundle.putByteArray("IMAGE_BYTEARRAY", imgByteArray);
FragmentEntityEdit fragmentEntityEdit = new FragmentEntityEdit();
fragmentEntityEdit.setArguments(bundle);
changeFragment(fragmentEntityEdit,true,true);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Когда я делюсь изображением из браузера в первый раз, он работает нормально. Фрагмент запущен, и изображение может быть загружено в ImageView.
Но во второй раз я использую опцию общего доступа браузера, это не загрузка нового изображения. (Только если я очищаю данные приложения вручную.)
ОБНОВЛЕНИЕ (загрузка изображения ImageView во фрагменте Entity):
в OnCreateView:
Bundle bundle = getArguments();
if (bundle != null) {
imgByteArray = bundle.getByteArray("IMAGE_BYTEARRAY");
}
ImageView imgOfEntity = view.findViewById(R.id.imageview_imgofentity);
if (imgByteArray != null) {
imgOfEntity.setImageBitmap(null);
Glide
.with(getActivity())
.load(imgByteArray)
.into(imgOfEntity);
}
Знаете ли вы, как я могу получить новые изображения?