【问题标题】:Determine the content length of an Intent.STREAM_EXTRA (Android)确定 Intent.STREAM_EXTRA (Android) 的内容长度
【发布时间】:2010-07-11 11:04:13
【问题描述】:

假设应用通过调用 android.intent.action.SEND 过滤器来获取内容流。还假设像这样接收 Uri 和流:

Uri contentUri = (Uri) extras.get(Intent.EXTRA_STREAM);
InputStream in = getContentResolver().openInputStream(contentUri);

现在,如何在不读取整个流的情况下确定内容的总长度?甚至可能吗? in.available() 不一定准确,所以我想我必须先阅读流直到最后?

内容可能非常大,例如大约 50MB 或更多。所以,我宁愿只读一次。

【问题讨论】:

    标签: android stream android-intent


    【解决方案1】:

    如果不读取流,则无法确定流中的数据量;但是,如果您是输入源,则可以通过其他一些额外的方法传递长度。

    我会读入ByteArrayOutputStream,然后调用toByteArray() 来获取结果字节数组。您不需要提前定义大小(尽管它可能是一种优化如果您知道的话。在很多情况下您不会)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      相关资源
      最近更新 更多