我在Android中通过电子邮件发送屏幕截图时阅读的每个示例都涉及先将位图保存到SD卡,然后再引用该图片以通过电子邮件发送。有没有办法可以发送屏幕截图而不先将其保存到手机上?
答案 0 :(得分:1)
欢迎您尝试为ContentProvider
返回的ParcelFileDescriptor
创建使用管道而非文件的流openFile()
。您的提供商将提供堆空间的屏幕截图,写入您从管道末端获得的OutputStream
。然后,您可以将Uri
传递给EXTRA_STREAM
附加内容中的提供商信息流。 This sample app说明了这种技术,但在我的情况下,我正在读取一个文件以写入OutputStream
。
这是一项相当多的工作,可能与所有电子邮件客户端不兼容。例如,您的基于管道的流不可搜索,客户端可能认为他们可以在流中寻找倒带以重新读取各种位。另请注意,您仍需要将屏幕截图的Bitmap
转换为PNG文件。
如果您担心外部存储空间中有文件,请将屏幕截图写入内部存储空间并使用FileProvider
进行投放。 This sample app与前一个类似,并说明FileProvider
的使用。
首先将位图保存到SD卡
大约零示例将证明这一点,因为开发人员无法轻易访问removable storage。这些例子可能是对external storage的写作。