Android:我的应用程序创建的位图是否必须先存储和扫描,然后才能将其作为隐式意图传递给其他应用程序?

Android: Does a bitmap created by my app have to be stored and scanned before I can pass it as an implicit intent to other apps?

简介和背景

您好,我有一个由我的应用程序创建的位图,我希望将此位图发送到任何可以处理 mime 类型 "image/png" 和操作 ("ACTION_SEND") 的应用程序。基本上,允许位图图像通过电子邮件和消息等其他组件发送给某人。

我现在得到了什么

此刻我的应用程序将位图图像保存到我创建的目录中的外部存储器中。保存的每个位图都由 MediaScannerConnection 扫描并使用 OnScanCompleteListener,我使用获得的 Uri 来构建隐式意图。这很好用。

我的问题

我试图迎合那些没有外部存储器或在他们不想要任何图像的地方勾选设置的用户saved/stored(只是为了那个例子,当他们关闭应用程序时就消失了)。 所以我需要在内存中实际保存图像并获取 Uri 以便将位图图像作为隐式意图传递。

非常感谢阅读。

不,您不需要将该图像保存在任何地方。只需从 Bitmap:

获取文件路径
String path = Images.Media.insertImage(context.getContentResolver(), bitmap,"abcd", null);

然后从中得到一个有效的Uri:

Uri image = Uri.parse(path); 

并将此 Uri 添加到您的 Intent 中,如下所示:

intent.putExtra(Intent.EXTRA_STREAM,  image);

完成!