У меня есть изображение в приложении, которое в конечном итоге будет извлечено из базы данных, чтобы упростить приложение (на данный момент) Я просто хочу просмотреть изображение во внешнем приложении, таком как Галерея или Фото.
Исходная попытка
//opens image with external program
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri imgUri = Uri.parse("content://" + item.getImage());
intent.setDataAndType(uri, "image/*");
holder.itemView.getContext().startActivity(intent);
break;
Это событие щелчка принимает участие в адаптере, поэтому вам, возможно, придется игнорировать "holder.itemView.getContext ()".Я обнаружил, что большинство сообщений на Stacked были посвящены извлечению фотографии из хранилища для просмотра в ImageView.Кроме того, я также обнаружил, что большинство ответов до 2017 года и отличаются от современных результатов.
Мой минимальный SDK равен 23.
Я включил:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.providers.media.MediaProvider"/>
Я тестирую на эмуляторе Android (7.0 - API 24)
После дополнительных исследований я обновил свой код до версии 2019, как показано ниже.Примечание: запросы на разрешение для WRITE_EXTERNAL_STORAGE выполнены успешно
Последнее обновление
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, item.getImage());
Uri contentUri = holder.itemView.getContext().getContentResolver().
insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(contentUri, "image/*");
intent.putExtra(Intent.EXTRA_STREAM, contentUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
holder.itemView.getContext().startActivity(intent);
Не уверен, почему это так сложно, я немного перегружен, и яуверен, что исправление достаточно просто.