在图库/照片中显示图像

时间:2019-02-07 17:49:47

标签: android android-intent android-permissions mediastore android-external-storage

我有一个应用程序内图像,最终会从数据库中提取该图像,以简化该应用程序(目前),我只想在诸如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);

不确定为什么如此困难,我有点不知所措,而且我敢肯定纠正很容易。

0 个答案:

没有答案