我有一个应用程序内图像,最终会从数据库中提取该图像,以简化该应用程序(目前),我只想在诸如Gallery或Photos之类的外部应用程序中查看该图像。
原始尝试
//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;
此click事件正在参与适配器,因此您可能不得不忽略“ 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);
不确定为什么如此困难,我有点不知所措,而且我敢肯定纠正很容易。