我读过的每个在 Android 中通过电子邮件发送屏幕截图的示例都涉及先将位图保存到 SD 卡,然后引用图片以将其通过电子邮件发送。有没有一种方法可以在不先将屏幕截图保存到手机的情况下发送屏幕截图?
最佳答案
欢迎您尝试为 openFile()
返回的 ParcelFileDescriptor
创建一个使用管道而不是文件的流式 ContentProvider
>。您的提供商将提供来自堆空间的屏幕截图,写入您从管道末端获得的 OutputStream
。然后,您将在附件的 EXTRA_STREAM
extra 中将 Uri
传递给提供商的流。 This sample app说明了该技术,但在我的例子中,我正在读取一个文件以写入 OutputStream
。
这是一项相当大的工作,可能无法与所有电子邮件客户端兼容。例如,您的基于管道的流是不可搜索的,并且客户可能认为他们可以在流中搜索以倒带以重新读取各种位。还要记住,您仍然需要将屏幕截图的 Bitmap
转换为 PNG 文件。
如果您担心将文件存储在外部存储中,请将屏幕截图写入内部存储并使用 FileProvider
提供它。 This sample app与上一个类似,并说明了 FileProvider
的使用。
first saving the bitmap to the SD card
大约零个示例将证明这一点,如 removable storage开发人员不容易访问。这些示例可能正在演示写入 external storage .
关于java - Android:如何在不将屏幕截图保存到 SD 卡的情况下在电子邮件中发送屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31685318/