当另一个应用程序向我的应用程序发送文件时,我通过该intent.getExtras().get(EXTRA_STREAM)
属性获得了一个 Uri。然后我可以使用输入流获取文件的字节:new BufferedInputStream(activity.getContentResolver().openInputStream(uri));
一切都很好,到目前为止工作正常。现在我想向我的用户展示某种进展,但我不确定如何在不事先完全读取流的情况下获取文件的总字节数(这会破坏进度条的全部目的) ...
我试过ParcelFileDescriptor fileDesc = activity.getContentResolver().openFileDescriptor(uri, "r");
了,但这仅适用于 uri 类型file://...
。
例如,如果我从 Skydrive 收到一个文件,我会得到一个content://..
Uri,如下所示:content://com.microsoft.skydrive.content.external/external_property/10C32CC94ECB90C4!155/Sunset.480p.mp4
在这样的 Uri 上,我得到(不出所料)“FileNotFoundException:不是整个文件”异常。
任何确定的方法来获得我将获得的数据流的总大小?