的内容提供商消费的客户端,我可以做这样的事情,才能得到正确的InputStream中读取图片:从内容提供者返回内存映射的InputStream?
InputStream is = getContentResolver().openInputStream(pictureUri);
这是一个很好的API,并会在服务器端,实际内容提供商导致调用:
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
// Open a proper ParcelFileDescriptor, most likely using openFileHelper(uri, mode)
}
但是,如果映射到URI的图片是不是要在文件系统中发现的,但作为一个存储资源,或在飞行中产生的。
我可以创建内存映射File
或InputStream
或其他任何东西,以便我不需要将临时文件保存到磁盘,只是为了能够将其返回给我的内容提供者使用者?
也就是说可能工作的解决方案,但不是我想这样做。我真的希望能够持续使用'ContentResolver#openInputStream()'方法读取各种远程数据。无论服务器如何创建/获取数据。这是一个不向客户端公开服务器实现的问题。 – PeyloW 2009-10-12 09:44:25
@PeyloW你找到了解决办法吗?我也在寻找解决方案。 – Sunny 2012-01-18 22:00:34
@孙尼这不是一个黑客。所以我最终保存了临时文件并发送了文件描述符。 – PeyloW 2012-01-19 08:21:43